चर तर्क गिनती के कार्यों के लिए टाइपप्रति प्रकार हस्ताक्षर

वोट
61

मैं मुसीबत समारोह सदस्यों को बताया कि बहस के चर राशियां स्वीकार साथ इंटरफेस को परिभाषित करने आ रही है। निम्नलिखित वस्तु एक उदाहरण के रूप शाब्दिक लें:

var obj = {
    func: () => {
        for(var i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
};

मैं इस तरह के रूप एक अंतरफलक परिभाषित करने में सक्षम होना चाहते हैं:

interface IExample {
    func: ( ??? ) => void;
}

ताकि निम्न कोड त्रुटि के बिना संकलन कर सकते हैं:

var test = (o: IExample) {
    o.func(a);
    o.func(a, b);
    o.func(a, b, c);
    ...
}
05/10/2012 को 04:40
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
106

टाइपप्रति ECMAScript 6 प्रसार प्रस्ताव का उपयोग करता है,

http://wiki.ecmascript.org/doku.php?id=harmony:spread

लेकिन कहते हैं एनोटेशन टाइप करें ताकि इस प्रकार दिखाई देगा,

interface IExample {
    func(...args: any[]): void;
}
05/10/2012 को 04:53
का स्रोत उपयोगकर्ता

वोट
2

बस चक के जवाब में जोड़ने के लिए, आप एक इंटरफेस इस तरह के रूप में परिभाषित किया है की जरूरत नहीं है। तुम सिर्फ कर सकते हैं ...विधि में सीधे:

class Header { constructor(public name: string, public value: string) {} }

getHeaders(...additionalHeaders: Header[]): HttpHeaders {
    let headers = new HttpHeaders();
    headers.append('Content-Type', 'application/json')

    if (additionalHeaders && additionalHeaders.length)
        for (var header of additionalHeaders)
            headers.append(header.name, header.value);

    return headers;
}

तो फिर तुम यह कॉल कर सकते हैं:

headers: this.getHeaders(new Header('X-Auth-Token', this.getToken()))

या

headers: this.getHeaders(new Header('X-Auth-Token', this.getToken()), new Header('Something', "Else"))
04/02/2018 को 12:49
का स्रोत उपयोगकर्ता

वोट
0

... args [] तर्क टाइपप्रति इस्तेमाल नहीं किया है अभी भी जावास्क्रिप्ट और प्रतियां इसे करने के लिए बहस में एक सरणी पैदा करता है।

से बचने के लिए यह आपके समारोह के साथ ही समारोह है, इस प्रकार के लिए एक प्रोटोटाइप बना सकते हैं unnecessariness: -

function format_n(str: string, ... $n: any[]): string;
function format_n(str: string): string {
    return str.replace(/%(\d+)/g, (_, n) => format_n.arguments[n]);
}
21/05/2018 को 14:34
का स्रोत उपयोगकर्ता

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