microsoft / microsoft/TypeScript
Please Allow Mixins to function properly with new-able types
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Abre el TypeScript Playground enlazado y reproduce la diferencia entre las declaraciones que no funcionan y las que funcionan en types.d.ts. Empieza trazando cómo la expresión JSDoc @extends utiliza una firma de constructor genérica y, después, verifica que new SomeClass() expone tsc y additional mediante el autocompletado, como se espera.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, typescript
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 55/100