typescript - Hur man åsidosätter globala variabeldefinitioner med TS


För vår app på jobbet vill jag uppmuntra människor att använda ett wrapper runt localStorage som automatiskt konverterar till/från JSON (och även har typkontroll på plats). Jag försökte skriva över den globala TS-definitionen för window.localStorage:

declare global {
  interface Window {
    localStorage: null,
  }
}

men det gjorde egentligen ingenting - finns det ett sätt att förhindra användningen av window.localStorage från att kompileras och ännu bättre ge användaren en användbar varning om varför det inte kompileras?

Svar #1

säg om du bara satte

 interface Window {
    localStorage: null,
  }

i deklarationsfilen som är global, och lägg den filen någonstans i ditt projekt som TSC-kompilatorn (VS Code-linter) känner till, då skulle du inte ens behöva det import ' ./our-defs.d.ts'

Svar #2

Okej, skitsamma, det här fungerade, men jag var tvungen att uttryckligen importera filen:

import './our-defs.d.ts'

men om någon vet hur man på något sätt kan ge ett eget felmeddelande, skulle det vara fantastiskt.