[英]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 Syed在TypeScript 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.