如何在 Typescript 中将字符串拆分为记录?

Kri*_*ool 1 typescript

我有一个用例,我想将字符串类型拆分为记录。

例子:

const string = "Thank you"
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

Record<'Thank' | 'you', string>
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法可以实现这一目标吗?

提前致谢

Les*_*iak 6

您需要使用模板文字类型

const MY_STRING = "Thank you";
type Split<S extends string, D extends string> =
    string extends S ? string[] :
    S extends '' ? [] :
    S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];

type MY_STRING_PARTS_TUPLE = Split<typeof MY_STRING, ' '>
type MY_STRING_PARTS = MY_STRING_PARTS_TUPLE[number];
type MY_RECORD = Record<MY_STRING_PARTS, string>
Run Code Online (Sandbox Code Playgroud)

游乐场链接

另请参见模板文字类型游乐场