type X<T>=T extends `${string}${'*('}${infer A}${')+'}${string}${'*('}${infer A}${')+'}${string}`?A:never
type Y=X<'g*(a12)+gggggg*(h23)+'> // 'a12' | 'h23'
type z=X<'g*(a12)+gggggg*(h23)+gggggg*(5hgf)+'> // 'a12' | 'h23' but without '5hgf'
我的目标是根据某种模式从字符串中提取所有文字.在上面的代码中,我想提取具有前置'*(
'和后缀'的文字.因此,type Y = 'a12' | 'h23'
.
但问题是字符串可以有任意数量的匹配模式文本,而且我不知道如何让类型脚本提取所有匹配的文本.
对于代码示例,Typescript仅提取2个文本,因为我写了${string}${'*('}${infer A}${')+'}
的两倍.如果我写 type z=X<'g*(a12)+gggggg*(h23)+gggggg*(5hgf)+'>
,我仍然得到type Z = 'a12' | 'h23'
'.理想情况下,我应该得到type Z = 'a12' | 'h23'|''5hgf''
如何使打字脚本"重写"字符串以获得所有所需的文字?
谢谢!