TypeScript 不会在以后初始化的 ANY 变量上抛出错误

TypeScript doesn't throw errors on later initialized ANY variable

提问人:HenrijsS 提问时间:8/4/2021 更新时间:8/4/2021 访问量:288

问:

我有一个只接受数字变量的函数。

function add(n1: number) {
    return n1 + n1;
}

我初始化一个 any 变量并为其分配一个字符串 '5'

let number1;
number1 = '5';

我想知道,为什么当我想将字符串传递给函数时它不显示错误?

console.log(add(number1));

(当然,它输出 55,因为字符串是连接的。

JavaScript 打字稿

评论

2赞 David 8/4/2021
我收到预期的错误。在整个过程中,您具体在哪里检查此错误?生成的 JavaScript 仍然是 JavaScript,并且仍将运行而不会抱怨类型。只有在 linting/转译中,它才会显示错误。
1赞 HenrijsS 8/4/2021
@David 这很奇怪。我正在运行 TS v4.3.5,但它没有出现在我的 IDE 和编译器中:snpy.in/7hkYM1
1赞 David 8/4/2021
我刚刚从下面的答案中学到了新东西。我使用的网站已经选择。进入配置并取消选择它,就会观察到您描述的行为。noImplicitAny
0赞 HenrijsS 8/4/2021
@David 刚刚检查了一下,这就是问题所在。感谢您指出:)

答:

2赞 kol 8/4/2021 #1

如果未指定类型(隐式)或设置为 ,则不会对变量的用法进行类型检查。如果您逐渐将 JavaScript 代码迁移到 TypeScript,这将非常有用。anyany

如果要将隐式 '(如示例中的)标记为错误,请使用编译器标志。anynoImplicitAny

评论

0赞 HenrijsS 8/4/2021
是的。这就是我一直在寻找的。我只是按照教程进行操作并自己进行实验。还没有进入tsconfig文件。