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": falsemain.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": truemain.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

