TypeScript类型别名type和接口interface的区别
- 联合类型必须要type
- interface可以合并同名接口,type不可以
- interface可以继承interface,继承type,使用extends关键字,type也可继承type,也可继承interface,使用&
联合类型必须要type
1 //联合类型 和 交叉类型
2 type StringNumber = string | number;
3 let a: StringNumber;
4 a = \"1\";
5 a = 7;
interface可以合并同名接口,type不可以
1 interface A{name:string}
2 interface A{age:number}
3 var x:A={name:\'xx\',age:20}
interface可以继承interface,继承type,使用extends关键字,type也可继承type,也可继承interface,使用&
1 interface A{name:string}
2 interface B extends A{age:number}
3 type C={sex:string}
4 interface D extends C{name:string}
5 type E={name:string}&C
6 type F ={age:number}&A
类型别名与接口的特殊属性
属性名称 | 属性用途 | 属性描述 |
---|---|---|
[id: number]: string | 给索引指定类型 | id 可以更换成其他字段 |
[propName: string]: any | 额外属性 | 在定义参数时我们定义的参数不一定是所有参数,加上这个后我们没定义的参数在 TsLint也不会报错了 |
readonly id: number | 只读属性 | 任何类型的参数属性加上 readonly 后都不可修改了 |
id?: number | 可选属性 | 所以参数加上 ? 后都是可选参数 |
id: number | 必需属性 | 不加 ? 说明这个参数是必须填写的 |
相关笔记