是否可以在Typescript中声明动态字符串类型

是否可以在Typescript中声明动态字符串类型,typescript,Typescript,假设: 导出枚举EEnv{devint,qa1}; 导出类型TEnv=EEnv类型的keyof; 导出常量环境:记录={ 越轨者:{ 事情:1, }, qa1:{ 事情:1, }, } 然后我想基于env对象创建动态对象,如下所示: 导出常量保存\u令牌:记录={ devint:“保存令牌/devint”,//基于“env”键 qa1:“保存令牌/qa1”//基于“env”键 } 是否有任何方法可以将字符串类型创建为“SAVE_TOKEN/”+TEnv,而不仅仅是字符串。对于仍在此处找到方法

假设:

导出枚举EEnv{devint,qa1};
导出类型TEnv=EEnv类型的keyof;
导出常量环境:记录={
越轨者:{
事情:1,
},
qa1:{
事情:1,
},
}
然后我想基于
env
对象创建动态对象,如下所示:

导出常量保存\u令牌:记录={
devint:“保存令牌/devint”,//基于“env”键
qa1:“保存令牌/qa1”//基于“env”键
}

是否有任何方法可以将字符串类型创建为“SAVE_TOKEN/”+TEnv,而不仅仅是字符串。

对于仍在此处找到方法的用户,请更新:这将在4.1中添加,请参阅

导出类型SaveTokenNamespace={[T in K]:`SAVE_-TOKEN/${T}`;
导出函数makeNamespace(env:Record):SaveTokenNamespace{
返回Object.keys(env.reduce((ns,k)=>({…ns,[k]:`SAVE_TOKEN/${k}`}),{}作为SaveTokenNamespace);
}
log(makeNamespace(env));
const envNamespace=makeNamespace(env);
const test1:'SAVE_TOKEN/qa1'=envmespace.qa1;//好啊
const test2:'SAVE_TOKEN/notqa1'=envmespace.qa1;//错误:类型“SAVE_-TOKEN/qa1”不可分配给类型“SAVE_-TOKEN/notqa1”。



有一些流行的开放式提案/请求,包括和,但从3.5.1开始,答案是否定的。

对于仍然在这里找到出路的人,更新:这将在4.1中添加,请参阅

导出类型SaveTokenNamespace={[T in K]:`SAVE_-TOKEN/${T}`;
导出函数makeNamespace(env:Record):SaveTokenNamespace{
返回Object.keys(env.reduce((ns,k)=>({…ns,[k]:`SAVE_TOKEN/${k}`}),{}作为SaveTokenNamespace);
}
log(makeNamespace(env));
const envNamespace=makeNamespace(env);
const test1:'SAVE_TOKEN/qa1'=envmespace.qa1;//好啊
const test2:'SAVE_TOKEN/notqa1'=envmespace.qa1;//错误:类型“SAVE_-TOKEN/qa1”不可分配给类型“SAVE_-TOKEN/notqa1”。



有一些流行的开放式提案/请求,包括和,但从3.5.1开始,答案是否定的。

如果您使用的是angular之类的框架,这是内置的。如果你不是,那就退房。关于使用环境变量的基本示例的教程:如果您使用的是像angular这样的框架,这是内置的。如果你不是,那就退房。关于使用环境变量的基本示例的教程: