代码之家  ›  专栏  ›  技术社区  ›  Tyler

这个流量误差是什么意思?

  •  1
  • Tyler  · 技术社区  · 7 年前

    我从Flow中得到了一个我不理解的错误。

    Cannot call document.createTreeWalker because:
     • Either number literal 4 [1] is incompatible with number literal 1 [2].
     • Or number literal 4 [1] is incompatible with number literal 5 [3].
     • Or number literal 4 [1] is incompatible with number literal 128 [4].
     • Or number literal 4 [1] is incompatible with number literal 129 [5].
     • Or number literal 4 [1] is incompatible with number literal 132 [6].
     • Or number literal 4 [1] is incompatible with number literal 133 [7].
    
         hello.js
            2│
            3│ const body = document.body;
            4│ if (body) {
            5│   document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, false);
            6│ }
            7│
    
         /tmp/flow/flowlib_18704f10/dom.js
     [2] 1050│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 1, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Element>;
         1051│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 4, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Text>;
     [3] 1052│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 5, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Element|Text>;
     [4] 1053│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 128, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Comment>;
     [5] 1054│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 129, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Element|Comment>;
     [6] 1055│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 132, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Text|Comment>;
     [7] 1056│   createTreeWalker<RootNodeT: Node>(root: RootNodeT, whatToShow: 133, filter?: NodeFilterInterface, entityReferenceExpansion?: boolean): TreeWalker<RootNodeT, Text|Element|Comment>;
             :
     [1] 3508│   static SHOW_TEXT: 4;
    

    在我看来 SHOW_TEXT (即4)应该是允许的,因为第1051行将4列为第二个参数的有效值。我错过了什么?

    要复制此文件,可以运行:

    git clone https://github.com/MatrixFrog/flow-example
    cd flow-example
    git checkout 0f6035a8bb05cc8f0f01418d4617973991baa231
    flow version # 0.73.0
    flow check
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   loganfsmyth    7 年前

    错误是如此无用的这一事实似乎是流的一个问题,但您的错误是

    filter?: NodeFilterInterface
    

    接受筛选器,或 undefined , null 不是有效值,因此

    document.createTreeWalker(body, NodeFilter.SHOW_TEXT, undefined, false);
    

    将正确通过排版检查。