MST

星途 面试题库

面试题:TypeScript字符串类型的映射类型应用

定义一个类型`StringMapper`,它接受一个字符串字面量类型`T`,并返回一个新的类型。这个新类型将`T`中的每个字符作为属性名,属性值为该字符在`T`中首次出现的位置索引(从0开始)。例如,对于`type Test = 'abc'`,应用`StringMapper`后得到`{a: 0, b: 1, c: 2}`。请实现`StringMapper`类型。
34.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type StringMapper<T extends string> = {
    [K in T as K]: T extends `${infer First}${infer Rest}`
        ? First extends K
            ? 0
            : Rest extends `${infer Next}${infer _}`
                ? Next extends K
                    ? 1 + StringMapper<Rest>[Next]
                    : never
                : never
        : never;
};