例如,如果我创建一个新的对象类型:

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。

09-04 23:36