Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    verbatimModuleSyntax

    Importy znaczą to, co mówią

    Import używany wyłącznie jako typ musi być zapisany jako `import type`, żeby wyemitowany JavaScript był tym, co pokazuje źródło.

    Od
    TypeScript 5.0
    strict
    Poza strict
    W twoim tsconfigu
    "verbatimModuleSyntax": true
    Skompilowane z
    "module": "esnext""moduleResolution": "bundler"

    Ten sam fragment za każdym razem. Zmieniła się tylko opcja.

    Z wyłączoną

    "verbatimModuleSyntax": false

    main.ts

    import { Widget } from './widget'
    
    export const make = (): Widget => ({ id: 1 })

    widget.ts

    export type Widget = { id: number }

    Kompiluje się czysto

    Z włączoną

    "verbatimModuleSyntax": true

    main.ts

    import { Widget } from './widget'
    
    export const make = (): Widget => ({ id: 1 })

    widget.ts

    export type Widget = { id: number }

    Zgłasza TS1484

    Dlaczego kompilator się tym przejmuje

    Kompilator decydował za ciebie: import, którego wiązania okazywały się wyłącznie typami, był usuwany z wyjścia. To niewidoczne i źle współgra ze wszystkim innym — moduł importowany dla efektu ubocznego znika, bundler transpilujący plik po pliku nie może podjąć tej samej decyzji, a dwa narzędzia nie zgadzają się co do tego, czym jest ten plik. Ta flaga przenosi decyzję do źródła, gdzie da się ją przejrzeć i gdzie każde narzędzie czyta tę samą odpowiedź.

    Wniosek

    To, co mówi plik, jest tym, co plik emituje. Na tym polega cała ta opcja.

    Gdzie iść dalej

    Opcji: 22