任意属性
有时候我们希望一个接口允许有任意的属性,可以使用如下方式。
interface Person {name: string;age?: number;[propName: string]: any;}let tom: Person = {name: "Tom",gender: "male",};
使用 [propName: string] 定义了任意属性取 string 类型的值。
只读属性
有时候我们希望对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性:
interface Person {readonly id: number;name: string;age?: number;[propName: string]: any;}let tom: Person = {id: 123,name: "Tom",gender: "male",};

如果使用 readonly 定义的属性 id 初始化后,又被赋值了,那么就会报错了:
