diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index 9ba2e23d896f..f7f2b304f64b 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -157,10 +157,6 @@ export default declare((api, { jsxPragma = "React" }) => { ClassProperty(path) { const { node } = path; - if (!node.value) { - path.remove(); - return; - } if (node.accessibility) node.accessibility = null; if (node.abstract) node.abstract = null; @@ -196,7 +192,10 @@ export default declare((api, { jsxPragma = "React" }) => { path.get("body.body").forEach(child => { if (child.isClassProperty()) { child.node.typeAnnotation = null; - if (!child.node.value) child.remove(); + + if (!child.node.value && !child.node.decorators) { + child.remove(); + } } }); }, diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.js index ce12b25f6fd4..abb53ac69bc3 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.js @@ -2,4 +2,6 @@ class C { public a?: number; private b: number = 0; readonly c!: number = 1; + @foo d: number; + @foo e: number = 3; } diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/options.json new file mode 100644 index 000000000000..43bd3d375961 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-typescript", + ["syntax-decorators", { "legacy": true }] + ] +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/output.js index 77e91a62b067..8dd079732dbc 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/output.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/output.js @@ -1,4 +1,8 @@ class C { b = 0; c = 1; + @foo + d; + @foo + e = 3; }