microsoft / microsoft/TypeScript
Polymorphic `this` and Generics
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
First, thank you team for polymorphic this. It is really handy!
I think I ran into a case though that I am finding challenging, when I need to return a this, but the generics might have changed. For example:
class A<T> {
private items: T[] = [];
map<U>(callback: (item: T, idx: number, a: this) => U): this {
// boring implementation details
});
}
Where I want to be able to change the generic type for the class with a function, but I will be contracting to return the "current" class, but I want to guard different generics. The following seems logical to me, but doesn't appear to be currently supported:
class A<T> {
private items: T[] = [];
map<U>(callback: (item: T, idx: number, a: this) => U): this<U> {
// boring implementation details
});
}
Where if no generics arguments are supplied, it is inferred to be the current ones, where as if they are supplied they are substituted.
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
El issue describe una interacción propuesta entre this polimórfico y la sustitución de tipos genéricos, pero no menciona archivos de implementación, tests ni puntos de entrada. Comienza localizando el manejo de this polimórfico y la instanciación genérica del compilador; se considerará completado cuando se admita el comportamiento solicitado de this<U> con las reglas de inferencia y sustitución indicadas, y esté cubierto por tests.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100