microsoft / microsoft/TypeScript
__metadata should register function that returns type instead of literal type
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
Imagine case with circular dependencies
class Car {
@Field owner: Person // !!! Error: Person is not defined.
}
class Person {
@Field car: Car;
}
// car has owner, owner has car
Typescript metadata would be emitted here like
eg.
__metadata('design:type', Person).
As Person is injected for the first time before Person class is initialized, it will result with ReferenceError saying Person is not defined.
If it'd emit metadata like:
__metadata('design:type', () => Person)
it'd be fine.
Later on, when using Reflect.metadata, it would also need to call meta function instead of just returning the type.
If you think it's good idea, do you have any suggestions about starting point for PR that would implement this change?
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den TypeScript-Compilerpfad nachzuverfolgen, der Decorator-Metadaten ausgibt, und untersuche dann, wie Reflect.metadata den ausgegebenen Wert verarbeitet. Als erledigt gilt, wenn das zirkuläre Car/Person-Beispiel den Initialisierungs-ReferenceError vermeidet und Metadatenkonsumenten die verzögerte Typfunktion aufrufen; der Payload nennt keine Dateien oder Tests.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100