Is there any difference between what the TypeScript spec calls a type assertion:
var circle = <Circle> createShape("circle");
And the newer as
operator:
var circle = createShape("circle") as Circle;
Both of which are typically used for compile-time casting?
The difference is that as Circle
works in TSX files, but <Circle>
conflicts with JSX syntax. as
was introduced for this reason.
For example, the following code in a .tsx
file:
var circle = <Circle> createShape("circle");
Will result in the following error:
error TS17002: Expected corresponding JSX closing tag for 'Circle'.
However, as Circle
will work just fine.
Use as Circle
from now on. It's the recommended syntax.