microsoft / microsoft/TypeScript
Property '[Symbol.iterator]' is missing in type 'PartialTuple<ConstructorParams<T>>
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
TypeScript Version: 3.1 -> 3.7
Search Terms:
tuple, mapped tuple
Code
type Constructor = new (...args: any[]) => any;
type ConstructorParams<T extends Constructor> = T extends new (...args: infer P) => any ? P : never;
type PartialTuple<T extends any[]> = {[I in keyof T]: T[I] | undefined}
type ConstructorReturnType<T extends Constructor> =
T extends new (...args: any[]) => infer R ? R : never;
function getClassFactory<T extends Constructor>(type: T) {
type OptionalParams = PartialTuple<ConstructorParams<T>>;
return getFunctionWithOptionalTypes<OptionalParams, ConstructorReturnType<T>>();
}
Expected behavior:
should compile correctly
Actual behavior:
shows error:
Type 'PartialTuple<ConstructorParams>' does not satisfy the constraint 'any[]'.
Property '[Symbol.iterator]' is missing in type 'PartialTuple<ConstructorParams>'.
Playground Link:
playground
I have to use 2 functions as I get A rest parameter must be of an array type. if I try to do it one function:
function getClassFactory<T extends Constructor>(type: T): new (...args: PartialTuple<ConstructorParams<T>>) => ConstructorReturnType<T> {
return {} as any;
}
I am trying to create a type that returns a function with parameters equal to that of a class constructor but where each parameter is T[P] | undefined.
I've done similar to this before
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
Comienza reproduciendo el error en los dos TypeScript Playgrounds enlazados con las versiones de TypeScript indicadas, centrándote en los ejemplos de la tupla mapeada y de los parámetros del constructor. Rastrea el procesamiento que hace el compilador de la restricción PartialTuple y de la validación de los parámetros rest. Se considera terminado cuando ambos ejemplos compilen sin los errores indicados de '[Symbol.iterator]' o de tipos de array.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100