TypeScript,valueof,如何将enum的值作为type使用。

50 阅读1分钟

背景

    TypeScript是一个强大的JavaScript的超集。能够帮助我们更好地开发项目。比如有一个固化的Array或enum,当我只想使用里面具体的值作为类型使用,同时这个Array或enum又比较大,逐个手写不是很友好。此时思考是否可以用TypeScript自身提供的一些功能并对它进行扩展。

实现

    实现如下。

export type valueof<T> = T extends  any[] ? T[number]
  : T extends object ? T[keyof T]
  : T extends string ? `${T}`
  : T extends (number | undefined | null | boolean) ? T
  : never;