TypeScript类型化函数参数接受任何

Luk*_*asH 6 typescript

这是一个可以很好编译的TypeScript代码片段(使用1.5.3)。

function alertNumber(a: number) {
    alert(a + 1);
}
var x:any = "string";
alertNumber(x);
Run Code Online (Sandbox Code Playgroud)

如何用type的参数调用某个类型的参数请求函数any

Dav*_*ret 6

这是因为您在使用any类型时选择不进行类型检查。

[有时]我们希望选择不进行类型检查,并让这些值通过编译时检查。为此,我们将其标记为“ any”类型。- 手册

为了避免麻烦any

  1. 使用--noImplicitAny编译器选项(或Allow implicit any types在Visual Studio中关闭)。
  2. any除非有必要,否则不要使用显式类型(例如var x: any

  • 即使我现在明白这是如何工作的,我仍然觉得它很奇怪。即使没有 `--noImplicitAny` 选项,我也会假设当我向函数声明添加类型时,它将要求任何调用者传递该类型。`any` 的含义仍然应该是“这可以是任何东西”,但你不应该只是在需要特定类型的地方传递“任何东西”变量。 (2认同)
  • @LukasH我打开了[此github问题](https://github.com/Microsoft/TypeScript/issues/4524)。 (2认同)