कार्यों में से एक टाइप सरणी

वोट
43

मैं यह पता लगाने की अगर यह टाइपप्रति कार्यों के एक स्थिर टाइप किया सरणी घोषित करने के लिए में संभव है संघर्ष कर रहा हूँ।

उदाहरण के लिए, मैं यह कर सकता:

foo: (data:string) => void = function (data) {};

लेकिन अगर मैं कार्यों कि एक स्ट्रिंग लेने के लिए और वापस जाने के लिए कुछ भी नहीं की एक श्रृंखला होना चाहिए foo चाहते हैं, कैसे मुझे लगता है कि क्या करते हो?

foo: (data:string) => void [] = [];

क्योंकि टाइपप्रति सोचता है कि यह एक समारोह है कि एक स्ट्रिंग लेता है और शून्य की एक सरणी देता है, और यह मुझे कोष्ठक में समारोह रैप करने के लिए कोशिश कर रहा है की तरह प्रतीत नहीं होता काम नहीं करता।

कोई विचार?

उत्तर : मोहम्मद के लिए धन्यवाद नीचे, यहां एक उदाहरण है कि टाइपप्रति खेल का मैदान में काम करता है:

class whatever {
public foo: { (data: string): void; }[] = [];

    dofoo() {
        for (var i=0; i < this.foo.length; i++) {
             this.foo[i](test);
        }
    }
}

var d = new whatever();

d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})

d.dofoo();
04/10/2012 को 20:41
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
61

आप में इस पा सकते हैं भाषा कल्पना खंड 3.5.5:

foo: { (data: string): void; } []
04/10/2012 को 20:55
का स्रोत उपयोगकर्ता

वोट
28

वसा तीर का उपयोग करके कार्यों की एक सरणी टाइप करने के लिए अन्य (नए, अधिक पठनीय) तरीके:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
23/04/2017 को 15:28
का स्रोत उपयोगकर्ता

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