为什么TypeScript不推断输入参数的类型

时间:2016-03-25 13:24:39

标签: typescript

我在TypeScript中有这个代码示例:

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

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

它在节点中编译和执行给出了NaN。

我想知道为什么y的类型是什么?我预计它会被推断为数字,因为它被传递给两次只能使用数字的函数。而这种期望基本上是由F#引起的:

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

谁知道calltwice是int-> int

1 个答案:

答案 0 :(得分:1)

您可以指定参数和返回类型:

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

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

在这种情况下,编译器将在编译期间检查类型。

注意: Typescript编译成JavaScript,在执行过程中根本不会检查类型。因此可能(如果您将从JavaScript调用此代码),您可以将任何对象传递给这些函数。