- 语法:interface使用关键字
interface
进行定义,而type使用关键字type
进行定义。 -
// interface定义 interface Dog { name: string; age: number; } // type定义 type Cat = { name: string; age: number; };
- 合并声明:当定义相同名称的interface时,它们会合并为一个声明,而type则会报错。
-
// interface合并声明 interface Animal { name: string; } interface Animal { age: number; } // type报错 type Animal = { name: string; }; type Animal = { age: number; };
- 实现/继承:interface可以通过
implements
关键字来实现,而type不能。 -
interface Printable { print(): void; } class Book implements Printable { print() { console.log("Printing book..."); } }
- 可以在interface中声明多次同名的属性,但在type中会报错。
-
interface Person { name: string; age: number; name: string; // 合法,在编译时会被合并为一个属性声明 } type Person = { name: string; age: number; name: string; // 报错,重复的属性声明 };
- 对于拓展(extends)其他类型,interface使用
extends
关键字,type使用&
操作符。 -
interface A { name: string; } interface B extends A { age: number; } type C = { name: string; } & { age: number; };
综上所述,interface和type在大多数情况下可以互换使用,但在一些语法和用法上有所区别。在选择使用interface还是type时,可以根据具体情况和个人喜好进行选择。
TypeScript中的interface和type的区别?
最新推荐文章于 2024-07-08 16:22:29 发布