TypeScript给接口添加任意属性

一个接口允许存在任意的属性

interface IPerson {
name: string;
age: number;
userBio?: string;
[propName: string]: any;
}
let wangzz: IPerson = {
name: 'wangzz',
age: 24,
userBio: '万事胜意',
gender: 'male' // 任意属性取string类型的值
}

一旦定义任意属性,确定属性和可选属性的类型都必须时其类型的子类型

interface Person {
name: string;
age?: number;
[propName: string]: string;
}
let tom: Person = {
name: 'Tom',
age: 25,
gender: 'male'
};
// index.ts(3,5): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'.
// index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; gender: string; }' is not assignable to type 'Person'.
// Index signatures are incompatible.
// Type 'string | number' is not assignable to type 'string'.
// Type 'number' is not assignable to type 'string'.

🦕🤡🤢一个接口中只能定义一个任意属性,如果接口中存在多个类型的属性可以将任意属性定义为联合类型

interface: IPerson {
name: string;
age?: number;
[propName: string]: string | number | boolean;
}
posted @   Felix_Openmind  阅读(489)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示