How to use a TypeScript cast with JSX/TSX
When casting in a .tsx
file, the compiler assumes it to be JSX, e.g.:
(<HtmlInputElement> event.target).value
gives an error
JSX element type 'HtmlInputElement' is not a constructor function for JSX elements
How do you cast TypeScript in a .tsx
file?
Solution 1:
The as
operator was introduced to TypeScript 1.6 to replace casts in .tsx
files, e.g.:
(event.target as HTMLInputElement).value
The TypeScript wiki explains the 1.6 changes:
it makes the new as
operator the default way to cast (removing any ambiguity between JSX expressions and the TypeScript prefix cast operator)