diff --git a/packages/babel-generator/src/generators/typescript.ts b/packages/babel-generator/src/generators/typescript.ts index 475ca7ba5f13..586566917174 100644 --- a/packages/babel-generator/src/generators/typescript.ts +++ b/packages/babel-generator/src/generators/typescript.ts @@ -127,6 +127,11 @@ export function tsPrintPropertyOrMethodName(this: Printer, node) { } export function TSMethodSignature(this: Printer, node: t.TSMethodSignature) { + const { kind } = node; + if (kind === "set" || kind === "get") { + this.word(kind); + this.space(); + } this.tsPrintPropertyOrMethodName(node); this.tsPrintSignatureDeclarationBase(node); this.token(";"); diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-kind/input.js b/packages/babel-generator/test/fixtures/typescript/interface-method-kind/input.js new file mode 100644 index 000000000000..3e2f9d8af07b --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-kind/input.js @@ -0,0 +1,4 @@ +interface Foo { + get foo(); + set bar(v); +} diff --git a/packages/babel-generator/test/fixtures/typescript/interface-method-kind/output.js b/packages/babel-generator/test/fixtures/typescript/interface-method-kind/output.js new file mode 100644 index 000000000000..2ac4a6d0bf01 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/interface-method-kind/output.js @@ -0,0 +1,4 @@ +interface Foo { + get foo(); + set bar(v); +} \ No newline at end of file diff --git a/packages/babel-types/src/ast-types/generated/index.ts b/packages/babel-types/src/ast-types/generated/index.ts index 1938f1feca13..1697376bb4e9 100755 --- a/packages/babel-types/src/ast-types/generated/index.ts +++ b/packages/babel-types/src/ast-types/generated/index.ts @@ -1701,6 +1701,7 @@ export interface TSMethodSignature extends BaseNode { parameters: Array; typeAnnotation?: TSTypeAnnotation | null; computed?: boolean | null; + kind: "method" | "get" | "set"; optional?: boolean | null; } diff --git a/packages/babel-types/src/definitions/typescript.ts b/packages/babel-types/src/definitions/typescript.ts index c805c0b751d0..5d2f7d764b91 100644 --- a/packages/babel-types/src/definitions/typescript.ts +++ b/packages/babel-types/src/definitions/typescript.ts @@ -118,6 +118,9 @@ defineType("TSMethodSignature", { fields: { ...signatureDeclarationCommon, ...namedTypeElementCommon, + kind: { + validate: assertOneOf("method", "get", "set"), + }, }, });