2016-09-21 5 views
5

निम्न उदाहरण में, चूंकि मैं स्विच स्टेटमेंट का उपयोग कर संदेश के प्रकार से मेल खाने का उपयोग कर रहा हूं, इसलिए मैं 'ENUM_TYPO' के गलत मामले को पहचानने के लिए प्रवाह चाहता हूं। यह वर्तमान में नहीं है।फ़्लोटाइप यूनियन प्रकारों (स्ट्रिंग एनम्स) पर स्विच का सुरक्षित रूप से उपयोग करना संभव है?

type Message = 'BROADCAST_MESSAGE' | 'PRIVATE_MESSAGE'; 

const message: Message = 'BROADCAST_MESSAGE'; 

switch (message) { 
    case 'ENUM_TYPO': 
    // Do Broadcast 
    break; 
    default: 
    break; 
} 

उत्तर

4

v0.32.0 के रूप में, फ्लो, पहुंच योग्य नहीं कोड के बारे में शिकायत नहीं है जब तक कि यह

// @flow 
function foo() { 
    throw new Error(); 
    return 123; // This will error 
}. 

की तरह कुछ है फिर भी, पर विचार के लिए निम्न कोड

// @flow 
function foo(x: string): Object { 
    if (x === 123) { 
    return x; 
    } 
    return {}; 
} 

विल वर्तमान में त्रुटि नहीं होगा इस कोड पर। प्रवाह वास्तव में नोटिस करता है कि x === 123 कभी भी सच नहीं होगा। if ब्लॉक के अंदर, फ़्लो x के प्रकार को खाली प्रकार में परिशोधित करेगा, क्योंकि यह विश्वास नहीं करता कि यह कोड कभी भी पहुंचा जाएगा। यही कारण है कि यह return x कथन के बारे में शिकायत नहीं करता है।

फ़्लो टीम के सदस्यों में से एक फ्लो में पहुंच क्षमता विश्लेषण जोड़ने के साथ लगभग किया जाता है। एक बार यह सुधार भूमि (मैं v0.34.0 अनुमान लगा रहा हूं?), फ़्लो शिकायत करेगा जब यह एक सशर्त देखता है जो सोचता है कि यह हमेशा असफल रहेगा। यह आपके उदाहरण के साथ आपकी मदद करेगा, क्योंकि स्विच स्टेटमेंट के मामले मूल रूप से सख्त समानता जांच हैं।

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