繁体   English   中英

tslint指出的“as syntax”是什么?

[英]What is the “as syntax” pointed out by tslint?

我升级了tslint,现在它抱怨:

ERROR: src/Metronome/JobFetcher.ts[13, 32]: Type assertion using the '<>' syntax is forbidden. Use the 'as' syntax instead.

违规代码如下:

const jobs = <JobConfig[]> <any> await rp(fetchJobsOptions);

什么是语法,我为什么要使用它?

像这样重构您的代码:

const jobs = await rp(fetchJobsOptions) as JobConfig[];

正如Basarat Ali SyedTypeScript Deep Dive一书中所指出的那样,它描述了类型转换:

作为foo vs. <foo>

最初添加的语法是<foo> 这在下面说明:

 var foo: any; var bar = <string> foo; // bar is now of type "string" 

然而,使用时语言语法存在歧义

 <foo> style assertions in JSX: var foo = <string>bar; </string> 

因此,现在建议您只使用foo作为一致性。

键入断言与强制转换

它之所以不被称为“类型转换”,是因为转换通常意味着某种运行时支持。 但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供有关如何分析代码的提示的方法。

如果你想抑制错误,你也可以去tslint.json并包含

...
"rules": {
    "no-angle-bracket-type-assertion": false,
    ...
}
...

如果你不介意如上所述的一致性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM