将联合映射到类型名称的字符串文字联合
Map a union to a string literal union of the type names
我有这样的类型(在这种情况下,用户将是自定义界面):
export type ArgumentTypes = string | number | boolean | user;
现在,我想要一种
export type ArgumentTypeNames = "string" | "number" | "boolean" | "user";
我已经尝试在自己周围搜索了一段时间,但一直无法找到获取名称的方法。我试过 ${ArgumentTypes}
但没用。
我对高级类型(映射、条件等)还很陌生,所以我希望得到答案或潜在解决方案的解释。
AFAIK,对于今天的 TypeScript 版本,如果没有 string
到 "string"
、number
到 "number"
等的显式映射,你就无法做到这一点。存在于你的程序中的某个地方。映射可能如下所示:
interface TypeMapping {
string: string;
number: number;
boolean: boolean;
user: user;
}
然而,并非所有都丢失了。您可以将此映射作为真实来源,并从中派生出其他类型:
type ArgumentTypeNames = keyof TypeMapping;
type ArgumentTypes = TypeMapping[ArgumentTypeNames];
我有这样的类型(在这种情况下,用户将是自定义界面):
export type ArgumentTypes = string | number | boolean | user;
现在,我想要一种
export type ArgumentTypeNames = "string" | "number" | "boolean" | "user";
我已经尝试在自己周围搜索了一段时间,但一直无法找到获取名称的方法。我试过 ${ArgumentTypes}
但没用。
我对高级类型(映射、条件等)还很陌生,所以我希望得到答案或潜在解决方案的解释。
AFAIK,对于今天的 TypeScript 版本,如果没有 string
到 "string"
、number
到 "number"
等的显式映射,你就无法做到这一点。存在于你的程序中的某个地方。映射可能如下所示:
interface TypeMapping {
string: string;
number: number;
boolean: boolean;
user: user;
}
然而,并非所有都丢失了。您可以将此映射作为真实来源,并从中派生出其他类型:
type ArgumentTypeNames = keyof TypeMapping;
type ArgumentTypes = TypeMapping[ArgumentTypeNames];