Interface

126 阅读1分钟
interface Person {
  // readonly name: string, //readonly 只读
  name: string;
  age?: number// ? 表示 非必需
  [propName: string]: any //拥有一个是字符串的任意属性,值是任意类型
  say(): string //可以是函数
}

type Person1 = string

const getPersonName = (person: Person): void => {
  console.log(person.name);
}

const setPersonName = (person: Teacher, name: string): void => {
  person.name = name
}

const person = {
  name: 'dell',
  sex: '男',//对出来的属性未在 Person 定义 此时不会报错
  say() {
    return '123'
  },
  arr() {
    return '789'
  },
}

getPersonName(person)
// getPersonName({  //直接传对象的话  ts会进行强校验
//   name: 'dell',
//   sex: '男',
// })
setPersonName(person, 'lee')

//类 应用 interface(接口)
class user implements Person {
  name = 'dell'
  say() {
    return '456'
  }
}

//interface之间的继承

interface Teacher extends Person {
  arr(): string
}

//interface 定义函数
interface Arrs {
  (word: string): string //函数的参数必须是string,返回值也必须是string
}

const say: Arrs = (word: string) => {
  return word
}