टाइपप्रति में मैं काम करता है कि एक स्ट्रिंग को स्वीकार करने और एक स्ट्रिंग लौटाने की एक सरणी कैसे घोषित करते हैं?

वोट
19

अद्यतन - इस सवाल के संदर्भ पूर्व टाइपप्रति 1.4 था। उस संस्करण के बाद से, मेरा पहला अनुमान भाषा के द्वारा समर्थित किया गया है। जवाब देने के लिए अद्यतन देखें।


मैं घोषणा कर सकते हैं fएक समारोह है कि एक स्ट्रिंग स्वीकार करता है और एक स्ट्रिंग रिटर्न होने के लिए:

var f : (string) => string

और मैं घोषणा कर सकते हैं gस्ट्रिंग की एक श्रृंखला होना चाहिए:

var g : string[]

मैं कैसे घोषणा कर सकते हैं hकी एक सरणी समारोह है कि एक स्ट्रिंग स्वीकार करता है और एक स्ट्रिंग रिटर्न होने के लिए?

मेरा पहला अनुमान:

var h : ((string) => string)[]

यही कारण है कि एक सिंटैक्स त्रुटि हो रहा है। अगर मैं अतिरिक्त कोष्ठकों दूर ले तो यह स्ट्रिंग से स्ट्रिंग की सरणी के लिए एक समारोह है।

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


2 जवाब

वोट
38

मैं यह समझ गया। समस्या यह है कि है =>ही केवल वाक्यात्मक चीनी है एक समारोह प्रकार शाब्दिक के लिए और साथ रचना के लिए नहीं चाहता है []

के रूप में कल्पना का कहना है:

एक समारोह प्रकार प्रपत्र का शाब्दिक

(ParamList) => ReturnType

वास्तव में ऑब्जेक्ट प्रकार शाब्दिक के बराबर है

{(ParamList): ReturnType}

तो क्या मैं चाहता हूँ है:

var h : { (s: string): string; }[]

पूरा उदाहरण:

var f : (string) => string

f = x => '(' + x + ')';

var h : { (s: string): string; }[]

h = [];

h.push(f);

अपडेट :

से आंकना इस changeset कोष्ठकों 1.4 में प्रकार घोषणाओं में अनुमति दी जाएगी, तो "पहले अनुमान" सवाल में भी सही हो जाएगा:

var h: ((string) => string)[]

इसके अलावा अद्यतन यह 1.4 में है!

03/10/2012 को 12:00
का स्रोत उपयोगकर्ता

वोट
0

मैंने लिखा एक छोटे से वर्ग PlanetGreeter / SayHello अपने शोध के आधार पर: `

/* PlanetGreeter */

class PlanetGreeter {
    hello    : { () : void; } [] = [];
    planet_1 : string = "World";
    planet_2 : string = "Mars";
    planet_3 : string = "Venus";
    planet_4 : string = "Uranus";
    planet_5 : string = "Pluto";
    constructor() {
        this.hello.push( () => { this.greet(this.planet_1); } );
        this.hello.push( () => { this.greet(this.planet_2); } );
        this.hello.push( () => { this.greet(this.planet_3); } );
        this.hello.push( () => { this.greet(this.planet_4); } );
        this.hello.push( () => { this.greet(this.planet_5); } );
    } 
    greet(a: string): void { alert("Hello " + a); }
    greetRandomPlanet():void { 
        this.hello [ Math.floor( 5 * Math.random() ) ] (); 
    } 
} 
new PlanetGreeter().greetRandomPlanet();
31/03/2014 को 10:19
का स्रोत उपयोगकर्ता

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