我升级了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);
虽然语法是什么,为什么要使用它?
答案 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 不要介意一致性。