diff --git a/src/lexers/jsx-lexer.js b/src/lexers/jsx-lexer.js
index 37c9dd86..eba68964 100644
--- a/src/lexers/jsx-lexer.js
+++ b/src/lexers/jsx-lexer.js
@@ -211,7 +211,14 @@ export default class JsxLexer extends JavascriptLexer {
type: 'text',
content: '',
}
- } else if (child.expression.kind === ts.SyntaxKind.StringLiteral) {
+ }
+
+ // simplify trivial expressions, like TypeScript typecasts
+ if (child.expression.kind === ts.SyntaxKind.AsExpression) {
+ child = child.expression
+ }
+
+ if (child.expression.kind === ts.SyntaxKind.StringLiteral) {
return {
type: 'text',
content: child.expression.text,
diff --git a/test/lexers/jsx-lexer.test.js b/test/lexers/jsx-lexer.test.js
index 74c86aaa..41cf7744 100644
--- a/test/lexers/jsx-lexer.test.js
+++ b/test/lexers/jsx-lexer.test.js
@@ -354,6 +354,15 @@ describe('JsxLexer', () => {
done()
})
+ it('erases typecasts', (done) => {
+ const Lexer = new JsxLexer()
+ const content = '{{ key: property } as any}'
+ assert.deepEqual(Lexer.extract(content), [
+ { key: '{{key}}', defaultValue: '{{key}}' },
+ ])
+ done()
+ })
+
it('keeps self-closing tags untouched when transSupportBasicHtmlNodes is true', (done) => {
const Lexer = new JsxLexer({ transSupportBasicHtmlNodes: true })
const content = 'a
b'