microsoft / microsoft/TypeScript

--esModuleInterop: Strange incompatibility between correct and incorrect import of same type

Abierto
#21,653 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Domain: Error Messages Experience Enhancement In Discussion Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

TypeScript Version: master

Code

b.d.ts

declare class C {
    f: this;
}
declare namespace C {}
export = C;

a.ts

import * as C1 from "./b";
import C2 = require("./b");

function f(t: (c: C1) => void): void {
    t(new C2());
}

Expected behavior:

Error at import * as C1.

Actual behavior:

No error at the import declaration. Error at new C2():

src/a.ts(5,7): error TS2345: Argument of type 'C' is not assignable to parameter of type 'C'.
  Types of property 'f' are incompatible.
    Type 'C' is not assignable to type 'this'.

(possibly related: #20704)

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el informe usando b.d.ts y a.ts exactamente como se muestran y, después, ejecuta el TypeScript checker para observar el diagnóstico en new C2(). Empieza rastreando cómo se comparan import * as C1, import-equals require, export = y la propiedad tipada con this. La tarea está terminada cuando la incompatibilidad se gestiona de forma coherente y la ubicación o el comportamiento esperados del diagnóstico quedan cubiertos por una prueba de regresión.

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
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.