टाइपप्रति में कार्य के लिए वापसी प्रकार की घोषणा करने के लिए कैसे

वोट
68

मैं यहाँ जाँच http://go.microsoft.com/fwlink/?LinkId=267238 जो है टाइपप्रति भाषा के विनिर्देशों लेकिन मैं एक बात मैं कैसे समारोह की वापसी प्रकार घोषणा कर सकते हैं कि नहीं देख सकता था। मैं पता चला है कि मैं क्या नीचे कोड में उम्मीद कर रहा था:greet(name:string) :string {}

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() : string{
        return Hello,  + this.greeting;
    }
}  

मैं देख रहा हूँ कि हम कुछ का उपयोग कर सकते (name:string) => anyहैं, लेकिन वे ज्यादातर जब कॉलबैक कार्यों के आसपास गुजर उपयोग किया जाता है:

function vote(candidate: string, callback: (result: string) => any) {
// ...
}
04/10/2012 को 22:28
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
61

आप सही हैं - यहाँ एक पूरी तरह से काम कर रहे उदाहरण है - आप देखेंगे कि var resultपरोक्ष एक स्ट्रिंग क्योंकि वापसी प्रकार पर निर्दिष्ट किया जाता है है greet()समारोह। करने के लिए प्रकार परिवर्तित करें numberऔर आप चेतावनी मिल जाएगा।

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() : string {
        return "Hello, " + this.greeting;
    }
} 

var greeter = new Greeter("Hi");
var result = greeter.greet();

यहाँ संख्या उदाहरण है - आप खेल के मैदान संपादक में लाल उतार दिखाई देगा, जब इस प्रयास करें:

greet() : number {
    return "Hello, " + this.greeting;
}
04/10/2012 को 22:32
का स्रोत उपयोगकर्ता

वोट
14

आप में समारोह प्रकार के बारे में और अधिक पढ़ सकते भाषा विनिर्देश वर्गों 3.5.3.5 और 3.5.5 में।

जब यह कर सकते हैं टाइपप्रति संकलक प्रकार का अनुमान लगा होगा, और इस प्रक्रिया के बाद आप स्पष्ट प्रकार निर्दिष्ट करने की आवश्यकता नहीं है। इसलिए स्वागतकर्ता उदाहरण के लिए, बधाई () एक स्ट्रिंग शाब्दिक, जो संकलक कि समारोह के प्रकार के एक स्ट्रिंग है, और एक प्रकार का उल्लेख करने की कोई जरूरत बताता है देता है। इसलिए इस नमूने में उदाहरण के लिए, मैं एक अभिवादन करना विधि है कि एक स्ट्रिंग देता है, और एक चर कि शाब्दिक नंबर पर असाइन किया गया है के साथ स्वागतकर्ता वर्ग की है। संकलक दोनों प्रकार का अनुमान लगा होगा और यदि आप एक नंबर के लिए एक स्ट्रिंग आवंटित करने के लिए आपको कोई त्रुटि मिल जाएगा।

class Greeter {
    greet() {
        return "Hello, ";  // type infered to be string
    }
} 

var x = 0; // type infered to be number

// now if you try to do this, you will get an error for incompatable types
x = new Greeter().greet(); 

इसी तरह, इस नमूने संकलक, जानकारी दी के रूप में एक त्रुटि का कारण होगा, प्रकार तय करने के लिए कोई रास्ता नहीं है, और जहाँ आप एक स्पष्ट वापसी प्रकार होनी चाहिए कि यह एक जगह होगी।

function foo(){
    if (true)
        return "string"; 
    else 
        return 0;
}

लेकिन यह काम करेगा:

function foo() : any{
    if (true)
        return "string"; 
    else 
        return 0;
}
04/10/2012 को 23:43
का स्रोत उपयोगकर्ता

वोट
2
functionName() : ReturnType { ... }
01/01/2018 को 16:43
का स्रोत उपयोगकर्ता

वोट
0

तीर अंकन का उपयोग वापसी प्रकार पिछले जवाब के रूप में ही है:

const sum = (a: number, b: number) : number => a + b;
04/11/2018 को 20:45
का स्रोत उपयोगकर्ता

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