tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts(7,61): error TS4002: Type parameter 'T' of exported class has or is using private name 'privateClass'. tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts(43,71): error TS4002: Type parameter 'T' of exported class has or is using private name 'privateModule'. tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts(62,65): error TS4002: Type parameter 'T' of exported class has or is using private name 'privateClassInPublicModule'. tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts(98,75): error TS4002: Type parameter 'T' of exported class has or is using private name 'privateModule'. ==== tests/cases/compiler/privacyTypeParametersOfClassDeclFile.ts (4 errors) ==== class privateClass { } export class publicClass { } export class publicClassWithPrivateTypeParameters { // Error ~~~~~~~~~~~~ !!! error TS4002: Type parameter 'T' of exported class has or is using private name 'privateClass'. myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } export class publicClassWithTypeParametersFromPrivateModule { // Error ~~~~~~~~~~~~~ !!! error TS4002: Type parameter 'T' of exported class has or is using private name 'privateModule'. myMethod(val: T): T { return val; } } class privateClassWithTypeParametersFromPrivateModule { myMethod(val: T): T { return val; } } export module publicModule { class privateClassInPublicModule { } export class publicClassInPublicModule { } export class publicClassWithPrivateTypeParameters { // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS4002: Type parameter 'T' of exported class has or is using private name 'privateClassInPublicModule'. myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } export class publicClassWithTypeParametersFromPrivateModule { // Error ~~~~~~~~~~~~~ !!! error TS4002: Type parameter 'T' of exported class has or is using private name 'privateModule'. myMethod(val: T): T { return val; } } class privateClassWithTypeParametersFromPrivateModule { myMethod(val: T): T { return val; } } } module privateModule { class privateClassInPrivateModule { } export class publicClassInPrivateModule { } export class publicClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPrivateTypeParameters { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParameters { myMethod(val: T): T { return val; } } export class publicClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } class privateClassWithPublicTypeParametersWithoutExtends { myMethod(val: T): T { return val; } } }