背景
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;