diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index cc6c1be62f..db0104f5e9 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -250,7 +250,11 @@ export default declare((api, { jsxPragma = "React" }) => { }, TSAsExpression(path) { - path.replaceWith(path.node.expression); + let { node } = path; + do { + node = node.expression; + } while (t.isTSAsExpression(node)); + path.replaceWith(node); }, TSNonNullExpression(path) { diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js new file mode 100644 index 0000000000..c35da37ddf --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js @@ -0,0 +1 @@ +(a as number as any) = 42; \ No newline at end of file diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js new file mode 100644 index 0000000000..e095ff18d1 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js @@ -0,0 +1 @@ +a = 42;