我是打字的初学者,我对“任何”类型的用法有疑问。使用“any”基本上就是选择不检查类型是否正确。
var num:any = 12
var num = 12
dm7nw8vv1#
虽然通过显式地将类型指定为any,两者在使用上是等效的(因为未指定时any是默认类型),但您显式地声明了Intent。Intellisense(如果可用)将类型显示为any,从而更容易理解如何使用变量。
any
kcwpcxri2#
首先-如果我们谈论Typescript,让我们避免var关键字。在编写应用程序时,我们可能需要描述我们不知道的变量的类型。这些值可能来自动态内容,例如来自用户或第三方库。在这些情况下,我们希望选择退出类型检查并让值通过编译时检查。为此,我们将这些值标记为any类型:例如:
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean
更多信息:Types in Typescript
yshpjwxd3#
Any:任何类型。当不可能知道类型时使用。当你将type声明为any时,你可以在该变量中重新分配任何类型的值。
var num:any = 12; num = boolean; num = "abcd"
sczxawaw4#
使用“any”基本上是选择不进行类型检查,如果我是正确的。好的。例如
var num:any = 12 var num = 12
我们也许可以用第二个当你没有提供类型注解,但提供了初始化器(= 12)时,TypeScript将根据初始化器表达式的结果类型推断变量的类型。例如,在你的示例中,它将推断number:Playground示例如果你想把num设置成其他的东西,比如字符串,你可以使用any,就像下面这样--但是继续阅读下去,我不会这样做(playground):
= 12
number
num
let num: any = 12; console.log(num); num = "twelve"; console.log(num);
如果你不使用类型注解(: any),那会给予你一个错误,因为num的类型被推断为number(playground):
: any
let num = 12; console.log(num); num = "twelve"; //^−−−− Type 'string' is not assignable to type 'number'.(2322) console.log(num);
也就是说,由于any选择不进行类型检查,因此您应该尽可能避免这种情况。在该示例中,如果我有一个非常好的理由允许变量为数字或字符串,那么最好将其指定为联合类型string | number(并可能更改其名称;Playground):
string | number
let x: string | number = 12; console.log(x); x = "twelve"; console.log(x);
这样,如果我尝试分配一个boolean(例如),我会得到一个错误。有什么必要说“任何”any的目的是,正如你所说的,选择退出对该变量的类型检查。下面是any文档的内容:any类型很有用,当你不想写出一个长类型只是为了让TypeScript相信某行代码是正确的。但是由于TypeScript的全部意义在于提供静态类型检查,而any选择不进行静态类型检查,因此一般而言,最好尽可能避免使用any。这并不总是可能的(特别是当与项目范围之外的无类型代码交互时),但如果可能,通常是最好的。
boolean
g0czyy6m5#
any选择退出类型检查,正如你所说的。你提出的第二个描述(没有any)也可以编译。但是当你像tslint一样使用linting时,它是无效的(*)。
**(*)**通过 * 无效 *,我的意思是你使用的IDE将弹出一个警报。any valid Javascript code is also valid for Typescript在编译的理由。
5条答案
按热度按时间dm7nw8vv1#
虽然通过显式地将类型指定为
any
,两者在使用上是等效的(因为未指定时any
是默认类型),但您显式地声明了Intent。Intellisense(如果可用)将类型显示为
any
,从而更容易理解如何使用变量。kcwpcxri2#
首先-如果我们谈论Typescript,让我们避免var关键字。
在编写应用程序时,我们可能需要描述我们不知道的变量的类型。这些值可能来自动态内容,例如来自用户或第三方库。在这些情况下,我们希望选择退出类型检查并让值通过编译时检查。为此,我们将这些值标记为any类型:
例如:
更多信息:Types in Typescript
yshpjwxd3#
Any:任何类型。当不可能知道类型时使用。当你将type声明为any时,你可以在该变量中重新分配任何类型的值。
sczxawaw4#
使用“any”基本上是选择不进行类型检查,如果我是正确的。
好的。
例如
我们也许可以用第二个
当你没有提供类型注解,但提供了初始化器(
= 12
)时,TypeScript将根据初始化器表达式的结果类型推断变量的类型。例如,在你的示例中,它将推断number
:Playground示例如果你想把
num
设置成其他的东西,比如字符串,你可以使用any
,就像下面这样--但是继续阅读下去,我不会这样做(playground):如果你不使用类型注解(
: any
),那会给予你一个错误,因为num
的类型被推断为number
(playground):也就是说,由于
any
选择不进行类型检查,因此您应该尽可能避免这种情况。在该示例中,如果我有一个非常好的理由允许变量为数字或字符串,那么最好将其指定为联合类型string | number
(并可能更改其名称;Playground):这样,如果我尝试分配一个
boolean
(例如),我会得到一个错误。有什么必要说“任何”
any
的目的是,正如你所说的,选择退出对该变量的类型检查。下面是any
文档的内容:any
类型很有用,当你不想写出一个长类型只是为了让TypeScript相信某行代码是正确的。但是由于TypeScript的全部意义在于提供静态类型检查,而
any
选择不进行静态类型检查,因此一般而言,最好尽可能避免使用any
。这并不总是可能的(特别是当与项目范围之外的无类型代码交互时),但如果可能,通常是最好的。g0czyy6m5#
any
选择退出类型检查,正如你所说的。你提出的第二个描述(没有any
)也可以编译。但是当你像tslint一样使用linting时,它是无效的(*)。**(*)**通过 * 无效 *,我的意思是你使用的IDE将弹出一个警报。any valid Javascript code is also valid for Typescript在编译的理由。