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

*爱你&永不变心* 提交于 2019-11-28 00:53:14
k0pernikus

Refactor your code like this:

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

As pointed out in the TypeScript Deep Dive book by Basarat Ali Syed, it says about type casting:

as foo vs. <foo>

Originally the syntax that was added was <foo>. This is demonstrated below:

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

However there is an ambiguity in the language grammar when using

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

Therefore it is now recommended that you just use as foo for consistency.

Type Assertion vs. Casting

The reason why it's not called "type casting" is that casting generally implies some sort of runtime support. However type assertions are purely a compile time construct and a way for you to provide hints to the compiler on how you want your code to be analyzed.

Though if you want to suppress the error; you can as well go to tslint.json and include "no-angle-bracket-type-assertion": false to rules, provided you don't mind consistence as said.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!