Jansiel Notes

TypeScript类型别名type和接口interface的区别

  1. 联合类型必须要type
  2. interface可以合并同名接口,type不可以
  3. 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 必需属性 不加 说明这个参数是必须填写的