microsoft / microsoft/TypeScript
class-factory mixins in type declaration files are impossible. (allow implicit return types in declaration files somehow)
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
Search Terms
When the compiler is set to emit declaration files, class-factory mixins are no longer allowed. This is yet another issue that prevents class-factory mixins from being adopted in library code that need to be publish as JS with sibling declaration files.
Suggestion
Allow implicit return types to be somehow representable in declaration files.
Use Cases
Enables many use cases that are otherwise impossible when emitting declaration files. I believe declaration files should support all features of TS.
Examples
Write a mixin function, and try to emit declaration files.
Workaround
As a workaround I publish TypeScript source files in my NPM packages, then I point the types field in package.json to my source entry point. I don't publish declaration files because I can't build them.
Pointing to source files opens up other cans of worms, and prior to TS 3.6.3 I was not able to point to source files due to pre-existing bugs in tsc in that scenario. After TS 3.6.3, I can successfully publish source files and point types to sources containing class-factory mixins, but I'm afraid this is brittle and can break with an upgrade to TS (just as it was broken from some point prior to v3.6.3).
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
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
Keine Quelldatei oder kein Test ist angegeben. Beginne damit, das Beispiel für ein class-factory mixin zu reproduzieren und dabei declaration files auszugeben, und verfolge anschließend das dabei relevante declaration-emission-Verhalten. Als erledigt gilt die Aufgabe, wenn eine unterstützte Darstellung des impliziten Rückgabetyps des mixin ausgegeben werden kann, ohne den Workaround zu benötigen, TypeScript-Quelldateien zu veröffentlichen.
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
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100