typescript TS1005-fel vid import av typer från typdefinition


Ett av biblioteken (parse5) som används av mitt projekt exponerar typinformation (i .d.ts-filer) med följande syntax för att importera typer:

import { type CharacterToken, type DoctypeToken, type TagToken, type EOFToken, type CommentToken } from '../common/token.js';

Detta orsakar en massa TypeScript-fel när applikationen körs, eftersom det verkar som att TypeScript inte känner igen detta sätt att importera typer på.

Om jag ändrar syntaxen till

import type { CharacterToken, DoctypeToken, TagToken, EOFToken, CommentToken } from '../common/token.js';

Jag får inget fel.

kan det vara så att jag använder en fel version av tsc?

Svar #1

Syntaxen som används i paketet 'parse5' för att importera typer infördes med Typescript 4.5: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#type-modifiers-on-import-names

Jag stötte på samma problem i ett projekt som använder TypeScript 4.4, och uppgradering till 4.5 löste problemet för mig.

Att kolla de öppna ärendena på parse5 visade att många har samma problem, t.ex. titta på https://github.com/inikulin/parse5/issues/913#issuecomment-1520222908

Svar #2

I TypeScript (3.8) bör du använda import type { SomeThing } from "./some-module.js";, inte import { type SomeThing } from "./some-module.js";

Mer information