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

时间:2017-05-26 13:01:23

标签: typescript 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);

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

2 个答案:

答案 0 :(得分:20)

重构您的代码:

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

正如TypeScript Deep Dive book by Basarat Ali Syed所指出的那样,关于类型转换:

  

为foo与<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作为foo   一致性。

     

键入断言与强制转换

     

它不被称为“类型铸造”的原因是铸造   通常意味着某种运行时支持。不过类型   断言纯粹是一个编译时构造,也是一种方法   向编译器提供有关您希望代码的提示的提示   分析

答案 1 :(得分:0)

尽管您想抑制错误;您也可以转到 tslint.json ,并在规则中添加“ no-angle-bracket-type-assertion”:false 不要介意一致性。