问题 #
实现字符串到联合类型。输入字符串参数。输出应该是输入字母的并集
例如
type Test = '123';
type Result1 = StringToUnion<Test>; // "1" | "2" | "3"
type Result2 =StringToUnion<"coronavirus"> // "c" | "o" | "r" | "o" | "n" | "a" | "v" | "i" | "r" | "u" | "s">>
解答 #
type StringToUnion<T extends string> =
T extends `${infer F}${infer Rest}`
? Rest extends ""
? F
: StringToUnion<Rest> | F
: never
拆分 #
- 通过不断拆分字符串,直到字符串为空
- 每次都返回拆分字符串的首字符和当前的结果组成并集