Exempt ambient private properties from noImplicitAny (#36640)

This commit is contained in:
Klaus Meinhardt
2020-02-15 00:01:19 +01:00
committed by GitHub
parent c59fcae117
commit 9b518c8f53
6 changed files with 59 additions and 1 deletions

View File

@@ -29280,7 +29280,7 @@ namespace ts {
}
function isPrivateWithinAmbient(node: Node): boolean {
return hasModifier(node, ModifierFlags.Private) && !!(node.flags & NodeFlags.Ambient);
return (hasModifier(node, ModifierFlags.Private) || isPrivateIdentifierPropertyDeclaration(node)) && !!(node.flags & NodeFlags.Ambient);
}
function getEffectiveDeclarationFlags(n: Declaration, flagsToCheck: ModifierFlags): ModifierFlags {

View File

@@ -0,0 +1,12 @@
tests/cases/conformance/classes/members/privateNames/privateNameAmbientNoImplicitAny.ts(5,5): error TS7008: Member '#prop' implicitly has an 'any' type.
==== tests/cases/conformance/classes/members/privateNames/privateNameAmbientNoImplicitAny.ts (1 errors) ====
declare class A {
#prop;
}
class B {
#prop;
~~~~~
!!! error TS7008: Member '#prop' implicitly has an 'any' type.
}

View File

@@ -0,0 +1,12 @@
//// [privateNameAmbientNoImplicitAny.ts]
declare class A {
#prop;
}
class B {
#prop;
}
//// [privateNameAmbientNoImplicitAny.js]
class B {
#prop;
}

View File

@@ -0,0 +1,13 @@
=== tests/cases/conformance/classes/members/privateNames/privateNameAmbientNoImplicitAny.ts ===
declare class A {
>A : Symbol(A, Decl(privateNameAmbientNoImplicitAny.ts, 0, 0))
#prop;
>#prop : Symbol(A.#prop, Decl(privateNameAmbientNoImplicitAny.ts, 0, 17))
}
class B {
>B : Symbol(B, Decl(privateNameAmbientNoImplicitAny.ts, 2, 1))
#prop;
>#prop : Symbol(B.#prop, Decl(privateNameAmbientNoImplicitAny.ts, 3, 9))
}

View File

@@ -0,0 +1,13 @@
=== tests/cases/conformance/classes/members/privateNames/privateNameAmbientNoImplicitAny.ts ===
declare class A {
>A : A
#prop;
>#prop : any
}
class B {
>B : B
#prop;
>#prop : any
}

View File

@@ -0,0 +1,8 @@
// @noImplicitAny: true
// @target: ESNext
declare class A {
#prop;
}
class B {
#prop;
}