2016-03-25 21 views
1

ben typescript bu kod örneği vardır:Neden typescript giriş parametre tiplerini ifade etmez

function twice(x:number) { 
    return x*2; 
} 

function calltwice(y) { 
    return twice(y); 
} 

Bu derler ve düğümünde yürütme NaN verir.

Neden y türünün herhangi biri olduğunu merak ediyorum? Sayı olarak çıkarılmasını bekledim, çünkü yalnızca iki sayı alabilen iki işleve geçilir. Ve bu beklenti temelde F # neden oldu: tam olarak bu calltwice bilir

let twice x = x*2 
let calltwice y = twice y 

olduğunu int-> int Sen argüman belirtmek ve türünü dönebilirsiniz

+2

Çağrınız “calltwice” ile başlıyor ve “y” argümanı herhangi bir şekilde çıkar. Bu iki kez (y) 'ın çağrısı herhangi bir hatayı atmaz, çünkü' y' türündedir. Sanırım başka yöne bakmaya çalışıyorsun. Sadece y @ 'function calltwice (y: number) .. için bir tür belirtmeniz gerekir. – PSL

cevap

1

: Bu durumda derleyici olarak

function twice(x: number): number { 
    return x*2; 
} 

function calltwice(y: number): number { 
    return twice(y); 
} 

olacak Derleme sırasında türleri kontrol edin.

Not: typescript JavaScript içine derler ve yürütme sırasında o hiç türlerini kontrol etmez. Potansiyel olarak (bu kodu JavaScript’ten çağırırsanız) herhangi bir nesneyi bu işlevlere geçirebilirsiniz.