合并
- interface 只能使用extends继承
- type 只能通过&交叉类型合并
interface B {}
interface A extends B {}
type qwe = string[] & B;
联合
- interface 不可以,interface里的属性才可以使用|联合
- type 可以定义联合类型和使用一些操作符
interface A {
asd: number | string;
}
type qwe = number | string;
重名
- interface 重名会合并
- type 不可以,第二次定义的会标红,使用时会是第一次定义的
interface A {
name: string;
}
interface A {
age: number;
}
let a: A = { name: "aaa", age: 0 };
type a = number;
type a = string;
let aaa: a = 1;
(补充) type高级用法
- 总结: A extends B
- 含义: A的值作为B的值的子类型, 遵循下图所示的包含关系(PS:上包涵下)
type a = 1 extends number ? 1 : 0;
type a = 1 extends Number ? 1 : 0;
type a = 1 extends Object ? 1 : 0;
type a = 1 extends any ? 1 : 0;
type a = 1 extends unknow ? 1 : 0;
type a = 1 extends never ? 1 : 0;

参考文档
blog.csdn.net/qq119556631…