例如,如果我创建一个新的对象类型:
interface NEWOBJECT {
name: {};
}
是否有可能做到这一点,以便名称可以是name1或name2,这样我就可以用其中一个名称作为NEWOBJECT的属性名称来创建NEWOBJECT了吗?
像这样:
var object1: NEWOBJECT = {name1: {}};
var object2: NEWOBJECT = {name2: {}};
谢谢
最佳答案
是
type NEWOBJECT = {
[N in 'name1' | 'name2']?: {};
}
不幸的是,这仍然允许同时存在或忽略这两个属性,因此我实际上将使用uniun类型遵循更精确的方法
interface NEWOBJECT1 {
name1: {};
}
interface NEWOBJECT2 {
name2: {};
}
type NEWOBJECT = NEWOBJECT1 | NEWOBJECT2;
确保您拥有最新的TypeScript。