TypeScript接口(Interfaces)来定义对象的类型
1. 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。
2. 在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implements)
interface Person {
name: string;
age: number;
}
let tom:Person {
name: 'tom',
age: 18
}变量tom是接口Person数据类型,则tom的所有属性必须与Person相同,无论是属性名还是属性值的数据类型,不能多也不能少必须完全一致
3. 可选属性
interface Person {
name: string;
age?: number;
}
let tom:Person {
name: 'tom'
}可选属性的含义是该属性可以不存在,但仍然不允许添加不存在的属性
4. 任意属性
接口中一旦定义了任意属性,那么接口中的可选属性和确定属性的必须是任意属性的子属性
interface Person {
name: string;
age?: number;
[propName:string]: any;
}
// A.
let tom:Person {
name: 'tom',
gender: 'male'
}
// B.
let tom:Person {
name: 'tom',
age: 12,
gender: 'male'
}B会报错,因为任意属性gender是string类型, number 不是 string 的子属性,所以会报错
5. 只读属性
只读属性是只该字段只在创建的时候被赋值,它的约束力在于第一次给对象赋值的时候,并非是第一次给只读属性赋值的时候
interface Person {
name: string;
readonly age: number;
gender?: string;
}
let tom:Person {
name: 'tom',
age: 12,
gender: 'male'
}
tom.age = 15; // 报错
// age属性只能在对象赋值时赋值。
let tom:Person {
name: 'tom'
} // 错 age为确定属性,赋值时必须包含此属性
tom.age = 12; // 错,age为只读属性,只有第一次对象赋值时才能赋值本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!