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