面试题答案
一键面试可选属性规则
在TypeScript中,当实现一个包含可选属性的接口时,实现类或对象不一定要包含该可选属性。可选属性在接口定义时通过在属性名后加 ?
来表示。在实现时,如果提供该属性,其类型必须与接口中定义的类型一致。
只读属性规则
只读属性在接口定义时通过在属性名前加 readonly
来表示。一旦在对象或类中实现了只读属性,该属性的值在初始化后就不能再被修改。在实现时,属性类型必须与接口中定义的类型一致。
代码示例
// 定义一个接口,包含可选属性和只读属性
interface User {
readonly id: number;
name: string;
age?: number;
}
// 实现接口
let user: User = {
id: 1,
name: 'John'
};
// 尝试修改只读属性会报错
// user.id = 2; // 报错: 无法分配到 "id" ,因为它是只读属性。
// 可以选择性地提供可选属性
user.age = 30;