2017-06-30 13 views
7

आदेश घटनाओं flowtype करने के लिए, मैं निम्नलिखित की तरह कस्टम प्रकार को परिभाषित:विशिष्ट प्रतिक्रिया मूल घटनाओं के लिए प्रवाह प्रकार?

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

जाहिर है, वहाँ कई लापता गुण (जैसे x और width) कर रहे हैं, लेकिन मैं अभी तक उनके लिए कोई जरूरत नहीं है।

मैं आर.एन. के लिए समान प्रकार का पता लगाने की कोशिश की है, लेकिन केवल एक Event प्रकार है कि विशेष रूप से उपयोगी होने के लिए प्रतीत नहीं होता पाया:

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

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

कोई मौजूदा प्रवाह प्रकार मूल निवासी घटनाओं प्रतिक्रिया या मैं की क्या ज़रूरत है के लिए कर रहे हैं खुद को परिभाषित करते रहो?

+0

हाँ, प्रकार परिभाषा उपयोगी होगी। मैंने सोर्स कोड देखा, लेकिन कोई नहीं देखा। ऐसा लगता है कि जावा कोड में घटनाओं को परिभाषित किया गया है; उदाहरण के लिए, 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 प्रकार में एक प्रकार को पारित कर सकते हैं। सदस्य 'देशी' को आपका कस्टम प्रकार मिलता है।

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

मैंने अभी तक इतना कुछ नहीं खेला है, लेकिन शायद जल्द ही ऐसा कर रहा है।

वहाँ documentation वहाँ प्रकारों पर ReactJS के हिस्से के रूप में है, और यदि उनमें से कोई भी परिभाषित किया गया है तो मूल कोडबेस खोजना चाहिए।

ऐसा लगता है कि समर्थन v0.53 के रूप में सीमित है, इसलिए आपको यह जांचना पड़ सकता है कि आप क्या प्राप्त करते हैं और अपना खुद का रोल करते हैं।

आरएन प्रकार के साथ लेलैंड रिचर्डसन maintains a Gist, लेकिन इसमें घटनाओं को शामिल नहीं किया गया है।

संबंधित मुद्दे