microsoft / microsoft/TypeScript

TS4055 when generating declaration for return type that uses type of paramter for protected methods

Offen
#61,591 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Domain: Declaration Emit Help Wanted
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

🔎 Search Terms

TS4055 declaration protected return typeof parameter

🕗 Version & Regression Information
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about declarations
⏯ Playground Link

https://www.typescriptlang.org/play/?ts=5.8.3#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgBSgjDRgWAGc4BvAKDjjCJNgE8BBALjiQFcBbAEZoA3PUbNSrAELcKMKMgDmYgL61aoSLDjpeSbGQhI4S4DELEpANUwAbXsAD6AeQDWACnFMrschW5LFjJKABpvSTYAOUx+YG43YFYIdAJIkIpwgEpA9P8AbRhWEhSJXyKYuIBdGnEoc14oEx9ggpapSuAqtQ0taHhsO0wKKnZahjBeQTsEbFNzIJt7R1dPcQm8ylzy-3CGDfLWToSk0sW-MPEctJ3KQuLgUvbo2K7x-fqYRubNinzniqvbridTiAD0YLgaCIUDgABUAMoAFgADABWNHcABKDSacCKJDgTymMzmcRgAAsIAATXREfhQ8D9YC0wbDKgU4ZE2EIKi8CjKCQIABumFQPFecAA5ACjq8pQA6CIQVCGFnzCzpVi2BzOACiUBhXn2ZVaWxuZsy61NHVeJ2SqXOGT2cGuToKBMeqVlnRqdBNn2+Noufx9QLEDFBDAhUMN0HhyJRAHYAMyBTBQV6oWEyrU6xxSonekmzODkqm09D0xnaVCsoYjOCcqjx3lwfmCpgisV4JCS3OHTqK5WqutwCgLPPLfVxqDG-YA-zbS0ug7BOVxe1nX6r4NFfPxC2kD0PJ5a30urLvaOQuEuAAiLhBtHUQA

💻 Code
export interface Properties {
  propertyA: number;
  propertyB: string;
}

export function getPropertyValue_Ok(
  properties: Properties,
  propertyName: keyof Properties,
): Properties[typeof propertyName] {
  return properties[propertyName];
}

export class A {
  public getPropertyValue_Ok(
    properties: Properties,
    propertyName: keyof Properties,
  ): Properties[typeof propertyName] {
    return properties[propertyName];
  }

  // error TS4055: Return type of public method from exported class has or is using private name 'propertyName'.
  protected getPropertyValue_Error(
    properties: Properties,
    propertyName: keyof Properties,
  ): Properties[typeof propertyName] {
    return properties[propertyName];
  }

  // error TS4073: Parameter 'propertyValue' of public method from exported class has or is using private name 'propertyName'.
  protected setPropertyValue_Error(
    properties: Properties,
    propertyName: keyof Properties,
    propertyValue: Properties[typeof propertyName],
  ) {
    // TODO
  }
}
🙁 Actual behavior

The protected methods fail to generate declaration with TS4055 or TS4073.

🙂 Expected behavior

The protected methods should be able to generate declaration similar to the public method or function.

Additional information about the issue

I wonder if there's a way to temporarily suppress this error, becuase ts-ignore doesn't seem to work when generating declaration.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem verknüpften TypeScript Playground und der bereitgestellten Reproduktion zur Deklarationsgenerierung und konzentriere dich auf die geschützten Methoden in class A sowie die Diagnosen TS4055/TS4073. Vergleiche ihr Verhalten mit der öffentlichen Methode und der eigenständigen Funktion; abgeschlossen ist die Aufgabe, wenn die Deklarationsgenerierung für die geschützten Methoden ohne diese Fehler erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.