2.9interface接口

interface Person2 {
  //  readonly name: 'string'; // 只读
  name: string;
  age?: number; // 可在可不在
  [propName: string]: any; // 可有其他字符串类型的 下面的直接传入对象里面的sex就不会报错
  say(): string; // 方法
}
interface Teacher2 extends Person2 {
  teach(): string;
}
// 接口除了可以定义属性方法之外还可以定义函数,还可以定义别克查阅文档
interface SayHi2 {
  (word: string): string;
}
// 来约束函数
const say2: SayHi2 = (word: string) => {
  return word;
};
const getPersonName = (person: Person2): void => {
  console.log(person.name);
};
const setPersonName = (person: Teacher2, name: string): void => {
  person.name = name;
};
const person2 = {
  name: "dell",
  sex: "male",
  say() {
    return "say hello";
  },
  teach() {
    return "xdcd";
  },
};
getPersonName(person2);
// 此处直接写对象不可,需要用变量先缓存一下
// getPersonName({
//   name: 'dell',
//   sex: 'male',
// say() {
//   return "say hello";
// },
// })
setPersonName(person2, "dell");
// 类可以应用接口
class User2 implements Person2 {
  name = "dell";
  say() {
    return "dkcmeoc";
  }
}
// 接口并不会变成js代码,只是做语法提示用的
原文地址:https://www.cnblogs.com/sinceForever/p/14843141.html