1.接口
使用场景:当一个对象类型被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的。
interface Person{
name:string;
age:number;
say():void;
hobby?:string;
readonly x: number;
}
语法规范
1.使用interface关键字来声明接口
2.属性类型后用 ;(分号)结尾
3.所有属性都不能有实际值,只定义结构 类型
4.hobby?:string;可读属性 对可能存在的属性进行预定义
5.readonly x: number; 只读属性 对象属性只能在对象刚刚创建的时候修改其值
例如
2.类型别名
type Person={
name:string;
age:number;
say():void;
hobby?:string;
readonly x: number;
}
3.两者对比
相同点: 1.都可以给对象指定类型 不同点: 1.类型别名不仅可以给对象指定类型别名,还可以为其他类型指定别名
type strNum=string|number
2.使用interface给相同的名字指定类型时类型会合并,而type不可以
interface A{
name:string;
}
interface A{
age:number;
}
let student:A={
name:'小明',
age:18
}
4.有其他不知道属性类型时
propName可以随意起名字,后面的string是为对象的key(属性)指定类型,
any是值可以任意类型,也可以为其指定单独的类型
interface A{
name:string;
[propName:string]:any;
}
interface A{
name:string;
[propName:string]:number|string;
}
5.interface使用继承
接口也可以相互继承,将公共的属性或方法抽离出来,通过继承来实现复用
此时B既有自己的类型指定,也继承了A所指定的类型
interface A{
name:string;
}
interface B extends A{
age:number;
}
let student:B={
name:'小明',
age:18
}