microsoft / microsoft/TypeScript
Creating too many types for DOM & D3
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
Commit 06fe1ed53721862b56c61ebb89b1daee2bc10710 introduced a regression in the number of types created when compiling a snippet of @types\d3. Specifically, it appears to be elaborating types for an error message that ends up getting dropped.
Repro:
{
"compileOnSave": false,
"compilerOptions": {
"alwaysStrict": true,
"noImplicitAny": true,
"noEmit": true,
"lib": [ "es5", "dom" ],
"noResolve": true,
"types": [],
"skipLibCheck": true
},
"files": [
"test.ts",
}
test.ts
declare function select<GElement extends BaseType, OldDatum>(selector: string): Selection2<GElement, OldDatum, HTMLElement, any>;
type BaseType = Element | Document | Window | null | number;
type ValueFn<T extends BaseType, Datum, Result> = (this: T, datum: Datum, index: number, groups: T[] | ArrayLike<T>) => Result;
interface Selection2<GElement extends BaseType, Datum, PElement extends BaseType, PDatum> {
select<DescElement extends BaseType>(selector: ValueFn<GElement, Datum, DescElement>): Selection2<DescElement, Datum, PElement, PDatum>;
}
For an apples-to-apples comparison, use nolib and specify the 3.1 lib.es5.d.ts and lib.dom.d.ts for both compilations.
In round numbers, there are ~150 types without the change and ~2500 types with the change.
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
Reproduce el problema con las compilerOptions proporcionadas y el fragmento test.ts, comparando los recuentos de tipos de aproximadamente 150 frente a 2500 mediante los archivos lib.es5.d.ts y lib.dom.d.ts de 3.1. Inspecciona el commit 06fe1ed53721862b56c61ebb89b1daee2bc10710 y la ruta de elaboración de mensajes de error del compilador. Se considera terminado cuando compilar la reproducción ya no elabore los tipos de mensajes de error descartados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- d3, typescript
- Área
- compilers, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 32/100