TS中type和interface的区别
看看官方的说明
-
组合方式:interface使用extends来实现继承,type使用&来实现联合类型
typy A = { a:string } type B = { b:string }&A const a: B = { a:'hi' b:'hi' } interface A = { aa:string } interface B extends A = { bb:string } const aa: B = { aa:"hi" bb:"hi" }
-
扩展方式:interface可以重复声明来扩展,type一个类型只能申明一次
interface A = { a:string } interface A = { b:string } //这里的A就会是 { a:string b:string } //但是type不能 type A = { a:string } type A = {//这里会报错 b:string }
-
范围不同:type适用于基本类型,interface一般不行
type A = string//可以 interface A = string //不可以
-
命名方式不一样: interface 会创建一个新的类型,type只是给类型起一个别名而已