Daktilo Fonksiyonlar için İade türleri bildirmek nasıl

oy
68

Burada kontrol http://go.microsoft.com/fwlink/?LinkId=267238 olan typescript Dil Özellikleri ama işlevin dönüş türü bildirmek nasıl olduğunu bir şey göremiyordu. Ben aşağıdaki kodu bekliyordum gösterdi:greet(name:string) :string {}

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

Nedense bir şeyi kullanabilirsiniz bkz (name:string) => anyancak geri arama fonksiyonları etrafında geçerken çoğunlukla kullanılır:

function vote(candidate: string, callback: (result: string) => any) {
// ...
}
Oluştur 04/10/2012 saat 22:28
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
61

Sen doğru - Burada tam bir çalışma örneği - bunun göreceksiniz var resultdöndürme türü belirtilmediği için örtülü bir dizedir greet()fonksiyonu. Için türünü değiştirin numberve uyarıları alırsınız.

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();

İşte sayı örneğidir - Bunu denerseniz oyun editörü kırmızı karalamalar görürsünüz:

greet() : number {
    return "Hello, " + this.greeting;
}
Cevap 04/10/2012 saat 22:32
kaynak kullanıcı

oy
14

Sen de işlev türleri hakkında daha fazla bilgi bulabilirsiniz dil şartname bölümleri 3.5.3.5 ve 3.5.5 içinde.

zaman can typescript derleyici türlerini anlaması olacak ve bu müstehcen türlerini belirtmek gerekmez yapılır. böylece karşılayıcı örneğin () fonksiyonunun tip bir dizedir derleyici ve türünü belirtmek gerek söyler değişmez bir dize döndürür selamlıyorum. bu nedenle bu örnekteki örneğin, bir dize döndürür Greet yöntemine ve edebi numaraya atanmış bir değişken ile karşılayıcı sınıf var. derleyici iki türü de anlaması ve size bir numaraya bir dize atamak çalışırsanız bir hata alırsınız.

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(); 

Benzer şekilde, bu örnek bilgi verilmiş derleyici gibi bir hataya neden olur, türünü karar için bir yol vardır ve bir açık dönüş türü gereken yer bu bir yer olacak.

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

Ancak bu, çalışır:

function foo() : any{
    if (true)
        return "string"; 
    else 
        return 0;
}
Cevap 04/10/2012 saat 23:43
kaynak kullanıcı

oy
2
functionName() : ReturnType { ... }
Cevap 01/01/2018 saat 16:43
kaynak kullanıcı

oy
0

ok gösterimi kullanarak İade tipleri önceki cevaplar aynıdır:

const sum = (a: number, b: number) : number => a + b;
Cevap 04/11/2018 saat 20:45
kaynak kullanıcı

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