用了 Flow 吗? 确实会抛异常:[https://github.com/babel/babel/blob/main/packages/babel-types/src/builders/flow/createTypeAnnotationBasedOnTypeof.ts#L47](https://link.segmentfault.com/?enc=v%2BVNQXSIf8R4B4SXGXBDTQ%3D%3D.fSKBpLup3DKeIlHcKGXpnLIQWR335pQqUAqwFIl4qXJyUbuELBZu8%2BT%2Ba4iZZb0wSOpGdaTsgs3i3Z13rjonjBWrarux3ODIAGluD3WIL3NiDcVnwpC7X274%2BPmHQ11Nwo4Qo69b6Q1%2B5jAaFfRu6s56uFYoqfHsXiQ8wghEGIw%3D) 目前看来是故意设计如此,但没研究为啥要这么设计。 * * * 【补充】 又仔细看了一下,虽然该源码所在的文件被放到了 Flow 目录下,但实际从主入口就会被调用,也就是说 TypeScript 同样会走这块的逻辑。 另外翻到了一个类似的 Issue:[https://github.com/babel/babel/issues/5178](https://link.segmentfault.com/?enc=mlNH9V45O4ZcaMFNvEiieg%3D%3D.YgsO3hvOo%2BrH2NB8qGdaJvUkt9UYYXZ%2Blf%2BDMQvjbw7sS5zWdgEbRM8QY2GeupHa) 跟题目中的场景差不多,只是他是这么写的: if (typeof a === '') { // balabala } 最下面有一位回复者 _kangax_ 是 babel 的核心贡献者之一,宣称会修复这个 bug,但这个 2017 年提的 Issue,至今仍未被 Close…… 😂