2017-06-30 15 views
7

は、私は次のようなカスタム型を定義します。特定のReactネイティブイベントのフロータイプ?イベントをflowtypeするために

export type OnScrollEvent = { 
    nativeEvent: { 
    contentOffset: { 
     y: number 
    }, 
    contentSize: { 
     height: number 
    } 
    } 
} 

は明らかに、いくつか欠けている性質(xwidthなど)があるが、私はまだそれらを必要としません。

私はRNのための同様のタイプを見つけるためにしようとしただけに特に有用であると思われないEventタイプを発見した:

import type {Event} from "react-native"; 

handleEvent = (e: Event) => console.log(e.inexistentProperty) // Flow doesn't care! 

は、ネイティブのイベントを反応させるのか、私が持っているため、既存のフロータイプがありますがそれらを自分で定義し続けますか?

+0

ええ、型定義が便利です。私はソースコードを見たが、何も見なかった。イベントはJavaコードで定義されているようです。たとえば、https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.javaを参照してください。 タイプ定義を提供する場所はhttps://github.com/flowtype/flow-typedです。パッケージ化してプルリクエストをまとめるには、カスタム定義を歓迎すると確信しています。 –

答えて

1

SyntheticEventタイプをご覧ください。 PressEventとScrollEventの基本的な定義があります。一般的なSynthenticEvent型に型を渡して、必要なものを定義することができます。メンバ 'nativeEvent'はあなたのカスタムタイプを取得します。

function handler(e: SyntheticEvent<CustomType>): void { 
    // e.nativeEvent... 
} 

私はそれほど多くはまだプレイしていませんが、まもなくそうする予定です。

そこにはReactJSの一部としてdocumentationがあり、それらのいずれかが定義されているとネイティブコードベースを検索する必要があります。

v0.53のサポートが限られているように見えるので、自分が何を取得してロールしているか調べる必要があるかもしれません。

Leyland Richardson maintains a Gist RNタイプがありますが、これはイベントを対象としていません。

関連する問題