reactjs - Hur skapar man ett paket med alternativet isolatedModules=true aktiverat?
I en fil där jag exporterar alla klasser i mitt paket på rader som följande:
export {default as BoundList, IBoundListOption, TBoundListFilterFn} from './list/BoundList';
fel av formen genereras:
TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided.
Hur exporterar jag klasser nu?
Detta problem uppstod i CRA2.1. Det var tvingat till isolatedModules=true. Jag gör ett komponentbibliotek på CRA2.1
Svar #1
CRA v3.4.1 underlättar typer som återexporteras under --isolatedModules. Den innehållna @babel/preset-typescript i version v7.9.0+ (se motsvarande Babel-release och meddelande) och TypeScript stöder TS 3.8 endast typ-importer och exporter. Du kan nu skriva:
export type { MyListType } from "./list/BoundList"
// or
import type { MyListType } from "./list/BoundList"
export type { MyListType }
// note additional "type" keyword
Ta en titt på detta svar för mer information om import/export-syntaxen.
Svar #2
github.com/babel/babel-loader/issues/603 (tack till @CollinD för länken) innehåller en lösning för hur man kan återexportera importerade typer. Denna kommentar på det ärendet har den bästa förklaringen av en lösning:
Du kan fortfarande göra en omexport om det är klart att du exporterar en typ:
import { T as a_T } from "./a"; export type T = a_T;Du kan också göra
export * from "./a";.
Om jag läser det GitHub-ärendet korrekt, kan endast TS-typer återexporteras, men värden (t.ex. klasser) kan inte återexporteras. Så om TS vet att du importerar en typ (inte en klass) kan du återexportera den.
Här är ett annat exempel som är enklare:
import { T } from "./a";
export type T = T;
