Skip to content

Commit 8ae5a8c

Browse files
committed
useDefineForClassFields skips emit of ambient properties
Previously: ```ts class C { declare p } ``` would incorrectly emit ```js class C { constructor() { Object.defineProperty(this, "p", { enumerable: true, configurable: true, writable: true, value: void 0 }); } } ``` when useDefineForClassFields was turned on (for targets <ESNext).
1 parent 5c95163 commit 8ae5a8c

File tree

5 files changed

+9
-1
lines changed

5 files changed

+9
-1
lines changed

src/compiler/transformers/utilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ namespace ts {
314314
*/
315315
function isInitializedOrStaticProperty(member: ClassElement, requireInitializer: boolean, isStatic: boolean) {
316316
return isPropertyDeclaration(member)
317-
&& (!!member.initializer || !requireInitializer)
317+
&& (!!member.initializer || !requireInitializer && !(getOriginalNode(member).flags & NodeFlags.Ambient))
318318
&& hasStaticModifier(member) === isStatic;
319319
}
320320

tests/baselines/reference/definePropertyES5.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class A {
66
["computed"] = 13
77
;[x] = 14
88
m() { }
9+
declare notEmitted: boolean;
910
}
1011

1112

tests/baselines/reference/definePropertyES5.symbols

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,8 @@ class A {
2121

2222
m() { }
2323
>m : Symbol(A.m, Decl(definePropertyES5.ts, 5, 13))
24+
25+
declare notEmitted: boolean;
26+
>notEmitted : Symbol(A.notEmitted, Decl(definePropertyES5.ts, 6, 11))
2427
}
2528

tests/baselines/reference/definePropertyES5.types

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,8 @@ class A {
2525

2626
m() { }
2727
>m : () => void
28+
29+
declare notEmitted: boolean;
30+
>notEmitted : boolean
2831
}
2932

tests/cases/conformance/classes/propertyMemberDeclarations/definePropertyES5.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ class A {
77
["computed"] = 13
88
;[x] = 14
99
m() { }
10+
declare notEmitted: boolean;
1011
}

0 commit comments

Comments
 (0)