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

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.

Leave a Comment