首页 > 解决方案 > 用动态数字推断模板字符串

问题描述

type Test = T extends `${infer Key}.${infer Rest}` ? Rest : never;

当您使用静态字符串进行推断时,此方法有效

Test<'test.test'>  // 'test'

是否可以用动态数字正确推断?并可能将该动态数字视为字符串“0”

Test<`test.${number}`> // will result never

标签: typescript

解决方案


您不能将动态数字传递给测试类型。只能基于创建的类型创建自定义类型。因此,可以正确推断,而不是使用动态数字而是使用类型。

type Test<T> = T extends `${infer Key}.${infer Rest}` ? Rest : never

type Value = 'value'

type Test1 = Test<`key.${Value}`>       // 'value'

// or

const val: Value = 'value'
type Test2 = Test<`key.${typeof val}`>  // 'value'

推荐阅读