typescript 模板字符串结合 infer 问题?

先来一段正常的 typescript 代码

type Q1 = '-open-flag' extends `${infer L}-${infer R1}${infer R2}` ? true : false

结果是 true , 在这个例子中 infer L 是一个 "" , infer R1 是一个 "o" , infer R2 是一个 "pen-flag"
extends 要想成立需要满足2个条件 字面量类型-(横杠)存在并且三个infer至少有一个infer可以取到类型。

为什么下面这个例子的类型是 "abc abc abc "

type Q2 = "lag" extends `${infer L}-${infer R1}${infer R2}` ? true : L;
回复
阅读 426
1 个回答

正如你所说:

extends 要想成立需要满足2个条件 字面量类型-(横杠)存在并且三个infer至少有一个infer可以取到类型

但是 LR1R2 三个变量只能在 extends 成立的分支中使用,而在第二个例子中,显然不会走到成立的分支,所以类型 Q2 应该是会报错的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题