diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index f2d37c5a13..f53a1e3437 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -78,7 +78,12 @@ export default declare( if (!node.decorators) { path.remove(); } - } else if (!allowDeclareFields && !node.value && !node.decorators) { + } else if ( + !allowDeclareFields && + !node.value && + !node.decorators && + !t.isClassPrivateProperty(node) + ) { path.remove(); } @@ -325,13 +330,16 @@ export default declare( // class transform would transform the class, causing more specific // visitors to not run. path.get("body.body").forEach(child => { - if (child.isClassMethod()) { + if (child.isClassMethod() || child.isClassPrivateMethod()) { if (child.node.kind === "constructor") { classMemberVisitors.constructor(child, path); } else { classMemberVisitors.method(child, path); } - } else if (child.isClassProperty()) { + } else if ( + child.isClassProperty() || + child.isClassPrivateProperty() + ) { classMemberVisitors.field(child, path); } }); diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/input.ts index 58026a1bda..8c8966cecd 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/input.ts +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/input.ts @@ -1,4 +1,5 @@ class C { + #m(x: number): void {} m(): void; public m(x?: number, ...y: number[]): void {} public constructor() {} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/options.json new file mode 100644 index 0000000000..9d466a3f3f --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-typescript", + "syntax-class-properties" + ] +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/output.js index b5436ecfae..701c92d9ed 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/output.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/methods/output.js @@ -1,4 +1,6 @@ class C { + #m(x) {} + m(x, ...y) {} constructor() {} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.ts index 2aad5f4a34..02769c7faa 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.ts +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/input.ts @@ -6,4 +6,6 @@ class C { @foo e: number = 3; f!: number; @foo g!: number; + #h: string; + #i: number = 10; } 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 index 14b2876dc1..a3d66ed683 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/options.json +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/properties/options.json @@ -1,3 +1,7 @@ { - "plugins": ["transform-typescript", ["syntax-decorators", { "legacy": true }]] + "plugins": [ + "transform-typescript", + ["syntax-decorators", { "legacy": true }], + "syntax-class-properties" + ] } 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 429cf6d413..139775da65 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 @@ -7,4 +7,6 @@ class C { e = 3; @foo g; + #h; + #i = 10; }