टाइपप्रति साथ ओपन एंडेड समारोह तर्क

वोट
82

IMO, के मुख्य चिंताओं में से एक टाइपप्रति भाषा मौजूदा वेनिला जावा स्क्रिप्ट कोड का समर्थन करने के लिए है। इस धारणा मैं पहली नजर में था। निम्न JavaScript समारोह जो पूरी तरह से वैध है पर एक नज़र डालें:

नोट: मैं यह नहीं कह रहा हूँ कि मैं इस दृष्टिकोण की तरह। मैं सिर्फ कह रहा हूँ यह एक वैध जावा स्क्रिप्ट कोड है।

function sum(numbers) { 

    var agregatedNumber = 0; 
    for(var i = 0; i < arguments.length; i++) { 
        agregatedNumber += arguments[i];
    }

    return agregatedNumber;
}

तो, हम तर्क के किसी भी संख्या के साथ इस समारोह का उपभोग:

console.log(sum(1, 5, 10, 15, 20));

हालांकि, जब मैं इस के साथ बाहर की कोशिश टाइपप्रति खेल का मैदान है, यह समय त्रुटियों संकलन देता है।

मैं यह सोचते हैं कि यह एक बग है। मान लेते हैं कि हम संगतता के मुद्दों की जरूरत नहीं है करते हैं। फिर, किसी भी तरह से ओपन एंडेड तर्क के साथ कार्यों के इस प्रकार लिखने के लिए है? इस तरह के रूप में paramsसी # में सुविधा?

02/10/2012 को 20:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
195

ऐसा करने का टाइपप्रति रास्ता (अंडाकार ऑपरेटर जगह है ...) तर्क के नाम से पहले। इसके बाद के संस्करण के रूप में लिखा जाएगा,

function sum(...numbers: number[]) {
    var aggregateNumber = 0;
    for (var i = 0; i < numbers.length; i++)
        aggregateNumber += numbers[i];
    return aggregateNumber;
}

यह तो साथ सही ढंग से जाँच टाइप करेगा

console.log(sum(1, 5, 10, 15, 20));
02/10/2012 को 20:57
का स्रोत उपयोगकर्ता

वोट
2

@chuckj जवाब के अलावा: तुम भी टाइपप्रति में एक लैम्ब्डा अभिव्यक्ति का उपयोग कर सकते हैं

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
19/03/2017 को 09:37
का स्रोत उपयोगकर्ता

वोट
0

टाइपप्रति में यह की अवधारणा है बाकी पैरामीटर , यह पैरामीटर जो समान type.If हम तो टाइपप्रति को लक्षित हम कोड लिखने के लिए है एक से अधिक मान प्राप्त करता है ECMAScript 6 मानक, तो टाइपप्रति transpiler इसके समकक्ष जावा स्क्रिप्ट कोड में बदल देता है ( जो है ECMAScript 5 मानक) है.अगर हम तो टाइपप्रति का उपयोग हम इस तरह के समारोह राशि के रूप में restparameter चर नाम के साथ तीन डॉट (...) preferx उपयोग करने के लिए है, (... संख्या: संख्या []), तो यह काम करेगा।

नोट: शेष पैरामीटर पैरामीटर list.likewise समारोह राशि में पिछले पैरामीटर होना चाहिए (: स्ट्रिंग, उम्र: संख्या ... संख्या: नाम संख्या [])।

10/05/2018 को 06:56
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more