【问题标题】:What is the correct flow type for window object?窗口对象的正确流类型是什么?
【发布时间】:2018-01-26 22:27:16
【问题描述】:

我需要从应用程序的根目录传入 window,但我对应该使用哪种流类型感到困惑。

我试过了

export default class ListAttribute extends Component {
  props: {
   frameWindow: mixed
  }
  componentDidMount() {
    this.props.frameWindow.addEventListener('click', this.closeList, false) 
  }
  ....
}

这给了我call of method addEventListener. Method cannot be called on mixed,我尝试过细化但没有成功。

我试着在这里寻找,但找不到任何关于 bom 本身的东西。 https://www.saltycrane.com/flow-type-cheat-sheet/latest/#lib/bom.js

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    您需要特定于window 的任何方法吗?如果您所做的只是对addEventListener 的一次调用,那么可以在任何EventTarget 上调用,window 肯定是。由于window 的默认类型是any,您应该可以将它传递给EventTarget

    这里有一个更简单的例子,希望能展示这个想法,但没有引入代码的所有细节:

    function withWindow(window: EventTarget) {
      window.addEventListener("click", (e: MouseEvent) => console.log(e), false); 
    }
    
    withWindow(window); // type checks fine!
    

    希望有帮助!

    【讨论】:

      【解决方案2】:

      There currently isn't any typings for the window object 好像。目前看来,使用了any的类型。

      【讨论】:

      • 从该票链接的Typescript definition 超过 14k 行代码!这可以解释为什么没有人费心为 Flow 做这件事……
      • 我切换到 Object,并在该行禁用了 linting :-( frameWindow: Object // eslint-disable-line flowtype/no-weak-types
      • 从那个 GitHub 问题中,看起来他们提到“没有充分的理由”没有人输入它。我想这不是优先事项。如果没有人很快这样做,我可能会尝试一下,并在一两周内向他们发送拉取请求。
      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多