我有一种类型:
type To_String<N extends number> = `${N}`
我创建映射结果字符串号的类型:
type Remap<Number>
= Number extends '0'
? 'is zero'
: Number extends '1'
? 'is one'
: Number extends '2'
? 'is two'
: 'other number'
type One = Remap<To_String<1>> // 'is one'
type Other = Remap<To_String<5>> // 'other number'
到目前为止还不错,但随后我try 只传递‘number’,例如try 调用返回‘number’的函数,但在这里我不知道如何匹配以反标记显示的结果类型,并与字符串匹配:
type Remap<Number>
// = Number extends `${number}` - attempt that catches all values
= Number extends '${number}' // not matched against string version
? 'is Template literal result'
: Number extends '1'
? 'is one'
: Number extends '2'
? 'is two'
: 'other number'
// this gives result type enclosed in backticks that still passes as string
type Template_String_Result = To_String<number> // `${number}`
// attempt that fails to catch top match clause
type Non_Literal_Number = Remap<To_String<number>>
有没有办法匹配这个模板文字字符串?