2012-10-02 19 views
16

Possible Duplicate:
open-ended function arguments with TypeScriptटाइपप्रति: variadic कार्यों

वहाँ variadic कार्यों के लिए किसी भी तरह से स्वीकार्य प्रकार हस्ताक्षर है के लिए प्रकार? उदाहरण:

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

console.log(sum(1, 2, 3, 4, 5)); 

मुझे संकलन त्रुटि देता है:

foo.ts(9,12): Supplied parameters do not match any signature of call target 
+1

देखें http://stackoverflow.com/questions/12697275/open-ended-function-arguments-with-typescript/12697349#12697349 - टाइपस्क्रिप्ट –

उत्तर

23

टाइपप्रति में आप "..." ऊपर पैटर्न हासिल करने के लिए उपयोग कर सकते हैं:

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

यह अपने त्रुटि का ध्यान रखना चाहिए।

+0

के साथ ओपन-एंड फ़ंक्शन तर्क मुझे लगता है कि यह एकाधिक प्रकार का समर्थन नहीं करता है प्रस्तुत करते हैं? उदाहरण के लिए, यह संकलित नहीं होगा: foo (... आइटम: स्ट्रिंग [] | संख्या []) – Lee

+1

@ देखें यह 'स्ट्रिंग [] | संख्या [] ', लेकिन' (संख्या | स्ट्रिंग) [] 'पूरी तरह से ठीक है (हालांकि आपको फ़ंक्शन बॉडी के अंदर कुछ कास्टिंग करने की आवश्यकता होगी)। – Borsunho

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