Typescript 2.1放松后使用打字稿的意义

Typescript 2.1放松后使用打字稿的意义,typescript,types,Typescript,Types,谁能告诉我今天使用打字本的目的是什么?我确信人们使用typescript主要是为了避免由类型引起的一些错误。但在v 2.1之后,以下代码是可接受的: let i; let aNumber = (x:number) => { x = 52; console.log(x); } aNumber(i); let aString = (x:string) => { x = 'strung'; console.log(x); } aString(i); 这真的让我想入

谁能告诉我今天使用打字本的目的是什么?我确信人们使用typescript主要是为了避免由类型引起的一些错误。但在v 2.1之后,以下代码是可接受的:

let i;

let aNumber = (x:number) => {
  x = 52;
  console.log(x);
}

aNumber(i);

let aString = (x:string) => {
  x = 'strung';
  console.log(x);
}

aString(i);
这真的让我想入非非。。。我是思想封闭还是打字稿作者?谢谢你公正的回答

问候,,
crova

您实际上可以配置对null和未定义类型的处理。见:

默认情况下,null和undefined是所有其他类型的子类型。这意味着您可以将null和undefined赋值给类似number的对象

但是,当使用-strictNullChecks标志时,null和undefined仅可分配给void及其各自的类型。这有助于避免许多常见错误。如果要传入字符串或null或undefined,可以使用union类型字符串| null | undefined

也看到

strictNullChecks编译器标志实际上已被禁用。

如果启用strictNullChecks编译器选项,代码将抛出错误,说明undefined不可分配给number

请看下面的图片

在v2.1之前,未初始化变量被隐式推断为v2.1之后更改的任何变量