क्या param
को स्ट्रिंग्स, एरे इत्यादि स्वीकार नहीं करना संभव है?टाइपस्क्रिप्ट स्ट्रिंग या सरणी स्वीकार करने से कोई गुण नहीं है
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
क्या param
को स्ट्रिंग्स, एरे इत्यादि स्वीकार नहीं करना संभव है?टाइपस्क्रिप्ट स्ट्रिंग या सरणी स्वीकार करने से कोई गुण नहीं है
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
आप baz
कम से कम एक वस्तु को स्वीकार करने के लिए कुछ इस तरह कर सकते हैं:
interface foo {
a?: number;
b?: string;
}
interface notAnArray {
forEach?: void
}
type fooType = foo & object & notAnArray;
function baz(param: fooType) {
}
baz("hello"); // Throws error
baz([]); // Throws error
यहाँ fooType
एक Intersection Type है।
क्या वह धोखा नहीं है? आप मजबूर कर रहे हैं कि पैरामीटर एक वस्तु होना चाहिए। –
@MuratK .: क्या वह ओपी चाहता है? लेकिन मैं इसे एक प्रकार बनाने की दिशा में दुबला नहीं होगा, बस 'फ़ंक्शन बाज़ (param: foo & object) ' –
यह ध्यान देने योग्य है कि' ऑब्जेक्ट 'प्रकार बहुत नया है, आपको इसका उपयोग करने के लिए टाइपस्क्रिप्ट 2.2 की आवश्यकता होगी। –
आपको परवाह क्यों है? यदि यह आपके इंटरफ़ेस को फिट करता है, तो आप क्यों सोचते हैं कि यह एक स्ट्रिंग या ऑब्जेक्ट है? –
हमारे पास एक बग था जहां हम ऑब्जेक्ट की बजाय वस्तु की संपत्ति को पार कर रहे थे, और टाइपस्क्रिप्ट ठीक संकलित। – user3233089
यह एक वैध चिंता है। –