क्या मौजूदा कक्षा के लिए अतिरिक्त विधियों को मैन्युअल रूप से परिभाषित करना संभव है?फ़्लोटाइप: गतिशील रूप से कक्षाएं
मेरे विशिष्ट USECASE है Bluebird के promisifyAll()
जो:
Promisifies ऑब्जेक्ट के गुणों के माध्यम से जा रहा है और वस्तु और अपने प्रोटोटाइप श्रृंखला पर प्रत्येक कार्य का एक async बराबर बनाने के द्वारा संपूर्ण वस्तु ... http://bluebirdjs.com/docs/api/promise.promisifyall.html
जाहिर है, प्रवाह स्वचालित रूप से इसे समझने में सक्षम नहीं होगा। तो, मैं इसे मदद करने के लिए तैयार हूँ। सवाल यह है कि कैसे?
निम्नलिखित कोड पर विचार करें
import http from 'http'
import { promisifyAll } from 'bluebird'
promisifyAll(http)
const server = http.createServer(() => { console.log('request is in'); })
server.listenAsync(8080).then(() => {
console.log('Server is ready to handle connections')
})
प्रवाह निम्न त्रुटि यहाँ देता है:
property `listenAsync`. Property not found in
Server
अगर मैं listen
इस्तेमाल किया कोई त्रुटि नहीं होगा। फ्लो का स्मार्ट यह देखने के लिए पर्याप्त है कि यह मॉड्यूल में परिभाषित एक वास्तविक विधि है। लेकिन listenAsync
promisifyAll
द्वारा गतिशील जोड़ है और प्रवाह
धन्यवाद। यह एकदम सही नहीं है, क्योंकि इसमें कोड परिवर्तन की आवश्यकता है। मामूली परिवर्तन, लेकिन फिर भी। और इसका मतलब है कि अन्य गतिशील मामलों के लिए भी कोड बदलना होगा। मैं समझता हूं कि "वास्तव में सुरक्षित नहीं होगा" भाग, लेकिन यह यथार्थवादी नहीं है क्योंकि दोनों मामलों में संकलक कोड से डेटा का अनुमान नहीं लगा सकता है और मुझे सही परिभाषा लिखने के लिए भरोसा दिलाता है। सामान्य रूप से – JimiDini
प्रवाह में कुछ गतिशील पैटर्न व्यक्त करना संभव नहीं है। आपको प्रवाह से बहुत गतिशील हिस्सों को अलग करना होगा और टाइप किए गए हिस्सों के लिए उचित घोषणाएं प्रदान करनी होंगी – vkurchatkin
यदि प्रवाह में "असुरक्षित" तरीके से प्रोटोटाइप एक्सटेंशन जैसी चीजों को करने के लिए तंत्र था तो यह वक्र को नाटकीय रूप से कम कर देगा। उदाहरण के लिए, यदि मैं should.js या chai जैसी लाइब्रेरी का उपयोग करता हूं, तो मुझे libs में एक इंटरफ़ेस बनाने में सक्षम होना चाहिए जो ऑब्जेक्ट के प्रोटोटाइप को 'चाहिए' फ़ंक्शन के साथ बढ़ाता है। यदि यह एक प्रकार से सुरक्षित तरीके से नहीं किया जा सका, तो उपभोक्ता को उन कोड पथों पर स्थिर विश्लेषण अक्षम करने दें जो त्रुटियों को फेंकने के बजाए इसका उपयोग करते हैं। – cchamberlain