microsoft / microsoft/TypeScript
Please Allow Mixins to function properly with new-able types
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
Bug Report
If we declare a new-able type, that is a mixin with the generic parameter it uses, the whole type is not processed.
For example, doing this, won't work
// In types.d.ts
namespace test.ts.bug{
var MyType: {
new <T>(): T & {
additional: "somevalue"
};
}
}
// Then, in VS code, we make use of the type as such
/** @extends {test.ts.bug.MyType<{tsc: "cool"|"sweet"}>} */
class SomeClass extends Object{
}
const myVar = new SomeClass()
Suppose you try to use myVar, you won't see the any of the properties corrected listed, and auto-completed.
However, if you declared it like this
// In types.d.ts
namespace test.ts.working{
var MyType: {
new <T>(): {
additional: "somevalue";
main: T
};
}
}
And obviously, did the following in js
// Then, in VS code, we make use of the type as such
/** @extends {test.ts.working.MyType<{tsc: "cool"|"sweet"}>} */
class SomeClass extends Object{
}
const myVar = new SomeClass()
then with const myVar = new SomeClass(), the properties additional, and main.tsc are auto-completed very well.
🔎 Search Terms
mixins new-able newable types
🕗 Version & Regression Information
Same version with vs code
⏯ Playground Link
Playground link with relevant code
🙁 Actual behavior
const myVar = new SomeClass() doesn't auto-complete in VS code
🙂 Expected behavior
const myVar = new SomeClass() is supposed to have the tsc, and additional set to true
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Ouvrez le TypeScript Playground lié et reproduisez la différence entre les déclarations qui ne fonctionnent pas et celles qui fonctionnent dans types.d.ts. Commencez par suivre la manière dont l’expression JSDoc @extends utilise une signature de constructeur générique, puis vérifiez que new SomeClass() expose tsc et additional via l’autocomplétion, comme prévu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 55/100