typescript - `import()` typanteckningar är förbjudna


Jag använder XState på backend och enligt XStates dokumentation lade jag till typannotering i min tillståndsmaskins konfiguration:

export const machine = createMachine(
    {
      tsTypes: {} as import("./testMachine.server.typegen").Typegen0,
    ...,
    }

Men typomvandlingen kastar detta fel:

`import()` type annotations are forbidden.eslint@typescript-eslint/consistent-type-imports
interface Typegen0

Jag tittade på dynamiska importeringar, men det verkar inte lösa problemet:

const dynamicImport = async() => await import("./testMachine.server.typegen")

Detta är från min eslint.

Svar #1

Det verkar som att det bara är ett lintfel. Din eslint-konfiguration förväntar sig ett visst sätt att importera typer på. Jag skulle anta att typinferensen och din kod fortfarande fungerar.

Du kan inaktivera lintningsfelet genom att lägga en ignorera-kommentar direkt ovanför raden med felet. Jag är inte säker på om jag fick kommentaren 100 % rätt, men något i den riktningen borde inaktivera felet.

// eslint-disable-next-line @typescript-eslint/consistent-type-imports
// @ts-ignore

Annars kan du också använda import-syntaxen från detta svar eller justera din eslint-konfiguration därefter.

Förresten, jag antar att await aldrig behövs för att importera typer.

Svar #2

Att använda import() för typning är som standard förbjudet i regeln consistent-type-imports i eslint, men du kan tillåta det genom att sätta disallowTypeAnnotations till false i din .eslintrc.json regler-sektion:

{
  "rules": {
    "@typescript-eslint/consistent-type-imports": ["error", {
      "disallowTypeAnnotations": false
    }],
...