原因是写了typeof xxx == 'array', 虽然不能这么用,但是也不应报错啊,这是babel的bug还是特性?
Invalid typeof value: array at createTypeAnnotationBasedOnTypeof (C:\Front\fe\node_modules\@babel\types\lib\builders\flow\createTypeAnnotationBasedOnTypeof.js:29:9) at inferAnnotationFromBinaryExpression (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:107:10) at getConditionalAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:138:20) at getTypeAnnotationBindingConstantViolations (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:35:20) at NodePath._default (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:22:14) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.ConditionalExpression (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferers.js:117:49) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.VariableDeclarator (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferers.js:62:27) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at getTypeAnnotationBindingConstantViolations (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:44:28) at NodePath._default (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:22:14) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.isGenericType (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:136:21) at PluginPass.ForOfStatement (C:\Front\fe\node_modules\@babel\plugin-transform-for-of\lib\index.js:143:48) at newFn (C:\Front\fe\node_modules\@babel\traverse\lib\visitors.js:159:14) at NodePath._call (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:46:20) at NodePath.call (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:36:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:82:31) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:107:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitSingle (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:65:19) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitSingle (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:65:19) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17)
用了 Flow 吗?
确实会抛异常:https://github.com/babel/babel/blob/main/packages/babel-types/src/builders/flow/createTypeAnnotationBasedOnTypeof.ts#L47
目前看来是故意设计如此,但没研究为啥要这么设计。
【补充】
又仔细看了一下,虽然该源码所在的文件被放到了 Flow 目录下,但实际从主入口就会被调用,也就是说 TypeScript 同样会走这块的逻辑。
另外翻到了一个类似的 Issue:https://github.com/babel/babel/issues/5178 跟题目中的场景差不多,只是他是这么写的:
if (typeof a === '') { // balabala}
最下面有一位回复者 kangax 是 babel 的核心贡献者之一,宣称会修复这个 bug,但这个 2017 年提的 Issue,至今仍未被 Close……
我在SpringRest时发现了一个非常奇怪的行为。 具有如下所示的终结点的 返回值条。听起来是正确的,但这不是一个有效的json,有效的结果应该是“bar”(注意“”)。有人可能会争辩说,spring认为,如果一个方法返回一个字符串,那么您已经手动序列化了该对象,但是如果所有其他对象都是由spring序列化的,那么我希望有一种特殊的方法来告诉它已经序列化了,但是默认的方法应该是序列化值。 也许我
在Ontotext GraphDB或RDF4J SPARQL评估中,函数似乎有问题。后者不太可能,因为我无法用内存中的SAIL重现该错误。 版本:Graphdb Free 9.4.1(以及一些早期版本:在9.4.0中确认,在9.3.3中怀疑,可能也早于此)。 复制: 在Windows 10下安装新的9.4.1免费GraphDB 创建一个默认配置的存储库,除了:启用了SHACL验证,没有推断(没有系
inflating类Android.Support.v7.Widget.Toolbar时出错。 nosuchfielderror:View_theme 在我的例子中,问题是:
找不到init? 那起的函数名有什么用?
在过去的几个月里,我注意到Android SDK Manager中有一个奇怪的行为。最近推出的Android SDK构建工具似乎没有得到更新,而是被认为是单独的包 名单越来越多,这有点困扰我。现在,每当我看到一个新的软件包时,我都只能卸载旧版本并安装新版本,因为我怀疑如果安装了同一个软件包的多个实例,可能会出现版本冲突 奇怪的是,我的系统上的每个SDK管理器都有这种行为(我有多个ADT安装在使用中