interface SomeType {
readonly prop: string;
}
代码如果改prop这个属性的值的话报错
readonly不意味这个属性绝对无法更改:
interface Home {
readonly resident: { name: string; age: number };
}
visitForBirthday(home: Home) {
// We can read and update properties from 'home.resident'.
console.log(`Happy birthday ${home.resident.name}!`);
home.resident.age++;
},
还可以通过别名(alias)来改变readonly的属性
interface Person {
name: string;
age: number;
}
interface ReadonlyPerson {
readonly name: string;
readonly age: number;
}
let writablePerson: Person = {
name: "Person McPersonface",
age: 42,
};
// works
let readonlyPerson: ReadonlyPerson = writablePerson;
console.log(readonlyPerson.age); // prints '42'
writablePerson.age++;
console.log(readonlyPerson.age); // prints '4