我使用的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)