条件接口或静态类属性和打字稿

时间:2020-09-17 03:03:34

标签: javascript node.js typescript

我使用的API提供程序要求根据环境发送不同的对象属性键(这是使用我为每个创建的自定义配置文件字段自动生成的标识符的CRM。) >

最初,我定义了一个Enum,指定键的接口和一个发送数据的函数:

export enum CustomFields {
  NAME = "2e6fbbfa-93c5-400a-ae6c-4453d3e30727",
  AGE = "c1b0de70-5c22-4aa1-9363-cd8ffee6a67d",
  ...etc,
}

export interface CreatePersonData {
   id: number;
   [CustomFields.NAME]: string;
   [CustomFields.AGE]: number;  
}

export function createPerson(data: CreatePersonData) {
  return request(url, data);
}

然后我发现自动生成的密钥在我的沙箱帐户中发生了变化。

是否有推荐的方法来使用这样的条件枚举,同时仍然能够在接口中使用它们?

我已经尝试过使用静态类属性的方法here,但似乎无法将其用作接口键。例如:

export class CustomFields {
  static NAME = process.env.NODE_ENV === 'production' 
     ? "2e6fbbfa-93c5-400a-ae6c-4453d3e30727" 
     : "c90ce7c8-5d13-42e4-863b-8b96eb058500"
}

interface CreatePersonData {
   [CustomFields.NAME]: string; // 
}

这会导致错误:

接口中的计算属性名称必须引用其类型为文字类型或“唯一符号”类型的表达式。ts(1169)

0 个答案:

没有答案
相关问题