javascript - Hvordan importere npm-pakker uten TypeScript-definisjon slik at IDE fortsatt gir intellisense?
Jeg bruker en npm-pakke som ikke har typedefinisjon for TypeScript. For å være nøyaktig, bruker jeg react-google-maps-biblioteket.
Etter deres eksempel importerte jeg følgende komponenter fra pakken:
import {GoogleMapLoader, GoogleMap, Marker} from "react-google-maps";
Men TypeScript gir en feil under kompilering som:
error TS2305: Module '"react-google-maps"' has no exported member 'GoogleMapLoader'.
Så, min raske løsning på dette er en deklarasjon av modulen med dens medlemmer av typen "any":
declare module "react-google-maps" {
export var GoogleMapLoader:any;
}
Nå er imidlertid problemet at IDE-en min (WebStorm) ikke gir intellisense lenger. GoogleMapLoader blir ikke engang gjenkjent som en React-komponent, noe jeg tror ville blitt gjenkjent (i det minste metodene og egenskapene uten typene) hvis jeg brukte Babel.
Hvordan kan jeg importere npm-pakker uten typedefinisjoner slik at de kan bli løst av TypeScript-kompilatoren og likevel ikke hindrer IDE-en fra å gi intellisense?
Svar #1
Du må erklære hva du bruker i stedet for bare å bruke any.
For eksempel:
declare module "react-google-maps" {
interface GoogleMapLoaderProps {
....
}
interface GoogleMapLoaderState {
....
}
class GoogleMapLoader extends React.Component<GoogleMapLoaderProps, GoogleMapLoaderState> { }
}
Du kan starte med bare det du bruker og trenger at IDE-en støtter, og gradvis legge til flere ting.
Du kan sjekke Skrive deklarasjonsfiler for mer informasjon om hvordan du gjør det.
