首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript:获取联合的可能类型的名称(作为字符串)?

在TypeScript中,要获取联合类型的名称作为字符串,可以使用类型谓词和条件类型的结合。

首先,通过类型谓词来创建一个联合类型的辨识函数,以判断某个变量是否是该联合类型的其中一个成员。例如,我们有一个联合类型 type MyUnion = string | number,可以创建一个辨识函数 isMyUnion

代码语言:txt
复制
function isMyUnion(value: unknown): value is MyUnion {
  return typeof value === 'string' || typeof value === 'number';
}

接下来,使用条件类型来获取联合类型的名称作为字符串。条件类型可以根据一个条件表达式的真假来选择两种不同的类型。通过使用条件类型的分支,我们可以获得联合类型的名称。

代码语言:txt
复制
type UnionToString<T> = T extends infer U ? U extends string ? U : never : never;

最后,将这两者结合起来,通过联合类型的成员应用辨识函数,并使用条件类型来获取联合类型的名称作为字符串:

代码语言:txt
复制
function getUnionTypeName<T extends MyUnion>(value: T): UnionToString<T> {
  if (isMyUnion(value)) {
    return typeof value === 'string' ? 'string' : 'number';
  }
  throw new Error('Invalid value');
}

这样,当我们调用 getUnionTypeName 函数时,将会根据输入值的类型返回相应的字符串类型名称。例如:

代码语言:txt
复制
console.log(getUnionTypeName('hello'));  // 输出:string
console.log(getUnionTypeName(123));      // 输出:number

这是一个关于TypeScript中获取联合类型的名称作为字符串的方法,希望对你有所帮助。对于更多关于TypeScript的信息,你可以访问腾讯云的TypeScript产品介绍链接:TypeScript产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券