diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts
index 1bc5bbb658c..8f85058cc63 100644
--- a/src/services/codefixes/helpers.ts
+++ b/src/services/codefixes/helpers.ts
@@ -305,6 +305,9 @@ export function addNewNodeForMemberSymbol(
}
function createName(node: PropertyName) {
+ if (isIdentifier(node) && node.escapedText === "constructor") {
+ return factory.createComputedPropertyName(factory.createStringLiteral(idText(node), quotePreference === QuotePreference.Single));
+ }
return getSynthesizedDeepClone(node, /*includeTrivia*/ false);
}
diff --git a/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName1.ts b/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName1.ts
new file mode 100644
index 00000000000..7dd7f0413bf
--- /dev/null
+++ b/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName1.ts
@@ -0,0 +1,17 @@
+///
+
+////interface I {
+//// constructor: number;
+////}
+////class C implements I {}
+
+verify.codeFix({
+ description: "Implement interface 'I'",
+ newFileContent:
+`interface I {
+ constructor: number;
+}
+class C implements I {
+ ["constructor"]: number;
+}`,
+});
diff --git a/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName2.ts b/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName2.ts
new file mode 100644
index 00000000000..b90e2e34df4
--- /dev/null
+++ b/tests/cases/fourslash/codeFixClassImplementInterfaceConstructorName2.ts
@@ -0,0 +1,19 @@
+///
+
+////interface I {
+//// constructor(): number;
+////}
+////class C implements I {}
+
+verify.codeFix({
+ description: "Implement interface 'I'",
+ newFileContent:
+`interface I {
+ constructor(): number;
+}
+class C implements I {
+ ["constructor"](): number {
+ throw new Error("Method not implemented.");
+ }
+}`,
+});