diff --git a/src/lexers/jsx-lexer.js b/src/lexers/jsx-lexer.js index 5a31e761..18251aa0 100644 --- a/src/lexers/jsx-lexer.js +++ b/src/lexers/jsx-lexer.js @@ -203,7 +203,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 8b13057b..8345ddde 100644 --- a/test/lexers/jsx-lexer.test.js +++ b/test/lexers/jsx-lexer.test.js @@ -341,6 +341,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
'