Appearance
TypeScript笔记2-接口(Interfaces)
date: 2021-11-15 16:46:12 tags: javascript
对「对象的形状(Shape)」进行描述
赋值的时候,变量的形状必须和接口的形状保持一致,不可少属性和多属性 例子
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: 'Tom',
age: 25
};可选属性 ?
带? 号的属性,可不存在
interface Person {
name: string;
age?: number;
}
let tom: Person = {
name: 'Tom'
};任意属性 [propName: string]: any
一个接口允许有任意的属性,可以使用如下方式
interface Person {
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
name: 'Tom',
gender: 'male'
};一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集
一个接口中只能定义一个任意属性。如果接口中有多个类型的属性,则可以在任意属性中使用联合类型
只读属性 readonly
readonly 定义只读属性: 只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候
interface Person {
readonly id: number;
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
id: 1,
name: 'Tom',
gender: 'male'
};
tom.id = 2; //报错