javascript Typescript中的“any”

eoxn13cs  于 2023-03-21  发布在  Java
关注(0)|答案(5)|浏览(305)

我是打字的初学者,我对“任何”类型的用法有疑问。
使用“any”基本上就是选择不检查类型是否正确。

  1. var num:any = 12
  2. var num = 12
    我们可能会使用第二个本身,什么是“任何”的必要性?
dm7nw8vv

dm7nw8vv1#

虽然通过显式地将类型指定为any,两者在使用上是等效的(因为未指定时any是默认类型),但您显式地声明了Intent。
Intellisense(如果可用)将类型显示为any,从而更容易理解如何使用变量。

kcwpcxri

kcwpcxri2#

首先-如果我们谈论Typescript,让我们避免var关键字。
在编写应用程序时,我们可能需要描述我们不知道的变量的类型。这些值可能来自动态内容,例如来自用户或第三方库。在这些情况下,我们希望选择退出类型检查并让值通过编译时检查。为此,我们将这些值标记为any类型:
例如:

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

更多信息:Types in Typescript

yshpjwxd

yshpjwxd3#

Any:任何类型。当不可能知道类型时使用。当你将type声明为any时,你可以在该变量中重新分配任何类型的值。

var num:any = 12;
num = boolean;
num = "abcd"
sczxawaw

sczxawaw4#

使用“any”基本上是选择不进行类型检查,如果我是正确的。
好的。
例如

var num:any = 12

var num = 12

我们也许可以用第二个
当你没有提供类型注解,但提供了初始化器(= 12)时,TypeScript将根据初始化器表达式的结果类型推断变量的类型。例如,在你的示例中,它将推断number:Playground示例
如果你想把num设置成其他的东西,比如字符串,你可以使用any,就像下面这样--但是继续阅读下去,我不会这样做(playground):

let num: any = 12;
console.log(num);
num = "twelve";
console.log(num);

如果你不使用类型注解(: any),那会给予你一个错误,因为num的类型被推断为number(playground):

let num = 12;
console.log(num);
num = "twelve";
//^−−−− Type 'string' is not assignable to type 'number'.(2322)
console.log(num);

也就是说,由于any选择不进行类型检查,因此您应该尽可能避免这种情况。在该示例中,如果我有一个非常好的理由允许变量为数字或字符串,那么最好将其指定为联合类型string | number(并可能更改其名称;Playground):

let x: string | number = 12;
console.log(x);
x = "twelve";
console.log(x);

这样,如果我尝试分配一个boolean(例如),我会得到一个错误。
有什么必要说“任何”
any的目的是,正如你所说的,选择退出对该变量的类型检查。下面是any文档的内容:
any类型很有用,当你不想写出一个长类型只是为了让TypeScript相信某行代码是正确的。
但是由于TypeScript的全部意义在于提供静态类型检查,而any选择不进行静态类型检查,因此一般而言,最好尽可能避免使用any。这并不总是可能的(特别是当与项目范围之外的无类型代码交互时),但如果可能,通常是最好的。

g0czyy6m

g0czyy6m5#

any选择退出类型检查,正如你所说的。你提出的第二个描述(没有any)也可以编译。但是当你像tslint一样使用linting时,它是无效的(*)。

**(*)**通过 * 无效 *,我的意思是你使用的IDE将弹出一个警报。any valid Javascript code is also valid for Typescript在编译的理由。

相关问题