出于演示目的,请考虑以下类型:
type ToEnglish<A extends string> =
A extends "1" ? "one" :
A extends "2" ? "two" :
A extends "3" ? "three" :
"etc";
type Convert<A extends string> =
A extends `${infer C}${infer Tail}` ?
`${ToEnglish<C>}-${Convert<Tail>}` : "";
例如,Convert<"12">
结果为"one-two-"
.
现在我想让它更通用,并接受上面的“翻译器”ToEnglish
作为参数:
type Convert2<A extends string, Translator> =
A extends `${infer C}${infer Tail}` ?
`${Translator<C>}-${Convert<Tail>}` : "";
这不起作用:Type 'Translator' is not generic. ts(2315)
如果我尝试写:
type Convert3<A extends string, Translator<_>> =
我得到:',' expected. ts(1005)
在<_>
.
问:有没有办法在 TypeScript、Flow 或另一个 JavaScript 超集中以某种方式将参数(通用)类型作为参数(参数)传递给另一种类型?
类似于高阶函数,但针对类型。