代码片段
interface Test{
name: string;
age: number;
//可有可无
sex?:boolean,
//自定义key 任意值
[propName:string]:any,
}
为什么propName还要规定为是string,难道还能有number,boolean,null,undefined,array,object,any,never的类型吗,离谱了吧?
代码片段
interface Test{
name: string;
age: number;
//可有可无
sex?:boolean,
//自定义key 任意值
[propName:string]:any,
}
为什么propName还要规定为是string,难道还能有number,boolean,null,undefined,array,object,any,never的类型吗,离谱了吧?
在 JavaScript 中,对象的属性名只能是字符串或者符号类型,而不能是数字、布尔值等其他类型。因此,在 TypeScript 中定义任意属性时,需要指定属性 key 的类型为字符串,以保证类型的正确性。
当然,如果你确信属性 key 是某种特定类型,也可以使用该类型来作为属性 key 的类型,例如:
interface Person {
name: string;
age: number;
[propName: number]: any;
}
但这样会比较少见,大部分情况下还是使用字符串类型来表示属性 key。