microsoft / microsoft/TypeScript

Bug: Incorrect module resolution for "valid" ES2015 specifiers with hashes and/or search parameters

Abierto
#22,689 1 comentario 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Awaiting More Feedback Domain: ES Modules Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.4k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

TypeScript Version: 2.8.0-dev.20180315

Search Terms: moduleResolution "module path" hash

Code

import { x as x1 } from './x.m.js';  // Typed correctly on hover
import { x as x2 } from './x.m.js#esm' // Typed as "import x…" on hover

Expected behavior:

Since module specifiers are now standardized, whereby if given an absolute specifier (or a relative specifier and the absolute referrer) should always result in a validly constructed new URL(specifier, referrer) it is expected that when a specifier includes suffix aspects like hash and search, that those aspects would be excluded from the pathname that is being resolved.

The implications of hash and search in runtime is beyond the scope of TypeScript and should remain so unless somehow the environment is customized to behave different (plugins maybe). However, if at all relevant, the specs have stated that at runtime each unique "resolved" URL (including hash and search) evaluates to a single unique instance of the respective module. It is not expected that TypeScript would need to determine if and when a module is a specific unique instance. It is however expected that when suffix aspects are included in the specifier that TypeScript would still resolve it's types identically as it does for the pathname sans hash and search.

Sorry for the long text!

Actual behavior:

TypeScript does not resolve pathnames with hash or search parameters.

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 problema con las dos sentencias de importación mostradas, comparando la resolución de './x.m.js' con './x.m.js#esm' y el pathname esperado sin hash ni search. Empieza siguiendo el manejo de TypeScript de la resolución de módulos para los especificadores de importación; el trabajo estará terminado cuando ambos especificadores resuelvan a los mismos tipos, conservando al mismo tiempo cualquier semántica de sufijo específica del tiempo de ejecución fuera de TypeScript.

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.