2016-07-27 15 views
6

मैं typescript2.0.0--strictNullChecks साथ और निम्न प्रकार के गार्ड का उपयोग कर रहा:उलटा टाइपप्रति प्रकार गार्ड

function isNotOk(value: any): value is null | undefined { 
    if (typeof value === 'number') { 
    return !isFinite(value); 
    } else { 
    return value === null || value === undefined; 
    } 
} 

कौन सा null, undefined, NaN और Infinite अमान्य हो जाएगा। मैं इसके विपरीत हूं:

export function isOk(value: any): value is not null | undefined { 
    return !isNotOk(value); 
} 

बेशक, यह वाक्यविन्यास काम नहीं करता है। क्या इसे पूरा करने के लिए कोई ज्ञात तरीका है?

+0

क्या आपके पास सख्त शून्य जांच चालू है? –

+0

हां, 'सख्त नल चेक्स' सक्षम है। मैं स्पष्ट करने के लिए सवाल अपडेट करूंगा। –

+0

क्यों नहीं {वापसी (टाइप करें मूल्य === 'संख्या')? isinite (मान): (मान! == शून्य और मूल्य! == अपरिभाषित);} काम? क्या शून्य जांच के साथ कोई समस्या है? –

उत्तर

9

मैंने जवाब पर ठोकर खाई; जेनरिक। बस एक विपरीत तरीके से संकीर्ण:

function isOk<T>(value: T | null | undefined): value is T { 
    return !isNotOk(value); 
} 
+1

केवल समस्या यह है कि यदि 'टी'' है '- तो टाइप गार्ड का' else' हिस्सा सोचता है कि 'मान'' कभी नहीं 'है, लेकिन यह वास्तव में' शून्य 'होना चाहिए। undefined'। –

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