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代码,只是做语法提示用的