我想声明一个至少包含一些必需键的对象,而对象可能包含任何其他键。
例如,对象student
必须具有键name
和gender
,并且任何其他键都可以接受。如何申报打字?
let student:{name:string, gender:string, ???};
//these must be valid
student = {
name:'Goku',
gender:'male',
power:'Super Saiyan'
}
student = {
name:'Pikachu',
gender:'unknown',
body:'yellow',
shoeSize:20
}
我几乎找不到与此相关的任何教程,这似乎很少见,我可能知道这是一个不好的做法吗?为什么?
答案 0 :(得分:4)
let student: {
name:string;
gender:string;
[key: string]: any;
};
// these are valid
student = {
name: 'Goku',
gender: 'male',
power: 'Super Saiyan'
};
student = {
name: 'Pikachu',
gender: 'unknown',
body: 'yellow',
shoeSize: 20
};
// this is invalid
student = {
body: 'yellow',
shoeSize: 20
};
答案 1 :(得分:0)
也许声明一个名称和性别的界面。 然后使您的类成为实现接口的'Any'的子类。