Búsqueda de sitios web

deno - tsc compilar TypeScript que importa usando la extensión de archivo


Escribo mi código TypeScript de manera independiente del ecosistema. Decidí incluir las extensiones de los archivos en las importaciones, coincidiendo con la web y Deno.

import xyz from "./foo.ts";

¿Cómo puedo hacer que el compilador de TypeScript (tsc) compile estos archivos sin el siguiente error:

error TS2691: An import path cannot end with a '.ts' extension.

Hasta ahora he probado lo siguiente en mi tsconfig.json sin éxito:

{
    "compilerOptions": {
        "paths": {
            "*.js": ["*"],
            "*.ts": ["*"]
        },
        ...
    },
    ...
}

Respuesta #1

Puedes compilar sin los errores diciéndole a tsc que ignore todas esas declaraciones import.

// @ts-ignore
import xyz from "./foo.ts";

Para entender por qué no puedes configurarlo para solucionarlo, tenemos que profundizar en las razones subyacentes de por qué TypeScript no quiere que uses la extensión .ts dentro de la declaración import.

tsc no reescribe los nombres de los archivos de los módulos, así que si le das

import xyz from "./foo.ts"

no produce un archivo foo.js, y el ECMAScript compilado resultante (de la versión que especifiques) todavía indica importar ./module.ts. Dado que el objetivo de compilar a ECMAScript es deshacerse de los archivos TypeScript, referenciar un archivo .ts en la salida claramente no es bueno.

Lo que deseas se ha mencionado en los problemas de GitHub de TypeScript (ver #27481, #11901). Puedes considerar unirte a la discusión en GitHub.

Respuesta #2

Actualmente estoy usando la API del compilador de TypeScript (actualmente en beta) para resolver este problema... publicaré más detalles pronto.

Artículos relacionados