2017-08-18 6 views
2

私のアプリケーションのルートからウィンドウを渡す必要があり、どのフロータイプを使用すべきか混乱しています。私はこれが私にcall of method addEventListener. Method cannot be called on mixedを与えるウィンドウオブジェクトの正しいフロータイプは何ですか?

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

を試してみました

、私は運に改善を試みました。

私はここを見てみましたが、ボム自体は何も見つかりませんでした。 https://www.saltycrane.com/flow-type-cheat-sheet/latest/#lib/bom.js

答えて

2

There currently isn't any typings for the window objectと思われます。今のところ、タイプはanyのように見えます。

+0

そのチケットからリンクされている[Typescriptの定義](https://github.com/Microsoft/TypeScript/blob/master/src/lib/dom.generated.d.ts#L12835)は、14k行以上のコードです!なぜ誰もFlowのためにそれをするのに気をつけなかった理由を説明することができます... –

+0

私はObjectに切り替え、その行のlintingを無効にしました:-( frameWindow:Object // eslint-disable-line flowtype/no-weak-types –

+1

GitHubの問題から、誰もまだそれをタイプしていないという理由がないと言われているようですが、それはあまり重要ではないと思います。それを1週間または2週間でプルリクエストしてください。 – saadq

0

windowに固有の方法が必要ですか?あなたがしているすべてがaddEventListenerへの1回の呼び出しであれば、それはEventTargetで呼び出すことができますが、それは確かにwindowです。 windowのデフォルトのタイプはanyなので、EventTargetの場合はそれを渡すことができます。

はここにあなたのコードのすべての詳細にさせることなく、うまくいけば、その考えを示していることに簡単な例です:

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

withWindow(window); // type checks fine! 

希望に役立ちます!

関連する問題