我在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
答案 0 :(得分:1)
您可以指定参数和返回类型:
function twice(x: number): number {
return x*2;
}
function calltwice(y: number): number {
return twice(y);
}
在这种情况下,编译器将在编译期间检查类型。
注意: Typescript编译成JavaScript,在执行过程中根本不会检查类型。因此可能(如果您将从JavaScript调用此代码),您可以将任何对象传递给这些函数。