1、接口
typescript的核心原则之一是对值所具有的结构进行类型检查,我们使用接口来定义对象的类型。
ts中,接口用来定义对象类型的数据
对类的一部分行为进行抽象
对“对象的形状(shape)”进行描述
接口是对象的状态(属性)和行为(方法)的抽象(描述)
接口名字一般首字母大写
1、定义一个普通接口
例:
interface Person {
name: string;
age: number;
}
使用接口,用来定义一个对象
let tom:Person={
name:'tom',
age:23,
}
那么tom就是一个Person类型的数据
Person接口中有name属性和age属性
那么定义对象时,name属性和age属性都必须有
而且不能有多余的其它属性
2、接口中的可选属性
有时我们希望不要完全匹配一个形状,
interface Person {
name: string;
age?: number;
}
定义对象时,age属性可以没有。
可选属性的好处:
可以对可能存在的属性进行预定义
可以捕获引用了不存在的属性时的错误
3、接口中的任意属性
interface Person {
name: string;
age: number;
[propName:string]:any;
}
[propName:string]表示任意属性的属性名为string
(propName可以取其它任何名字)
:any表示任意属性的属性值为any
注意:一旦定义了任意属性,那么确定属性和可选属性的类型都必须是这个任意类型的属性的子集
例如,如果[propName:string]:string,那么name和age这两个属性就也必须是string
4、只读属性
对象中的属性只能在创建时赋值,以后不能再修改这个属性值。
在定义接口时,在前面用readonly定义只读属性
例:
interface Person {
name: string;
age: number;
readonly book:string
}
let tom:Person={
name:'tom',
age:23,
book:'红楼梦'
}
修改属性tom.name不报错
修改属性tom.book就会报错