TypeScript to typowy nadzbiór JavaScriptu. który kompiluje się do formatu JavaScript. Fragment kodu poniżej pokazuje proste użycie Map Google za pomocą TypeScript.
let map: google.maps.Map;
const center: google.maps.LatLngLiteral = {lat: 30, lng: -110};
function initMap(): void {
map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
center,
zoom: 8
});
}
Pierwsze kroki
Projekt DefinitelyTyped to projektów open source, które zachowują typ pliki deklaracji dla wielu pakietów, w tym do Map Google. Deklaracja JavaScript Map Google (patrz pliki źródłowe w serwisie GitHub) można zainstalować za pomocą NPM z pakietu @types/google.maps.
npm i -D @types/google.maps
Funkcje w wersji alfa i beta
typy zwykle nie mają właściwości, funkcji ani klas występujących w wersji alfa lub wersji beta. W wielu z tych przypadków obiekt można przekształcić w odpowiednią klasę.
Ten błąd jest spowodowany właściwością mapId
w wersji beta dla MapOptions
.
error TS2345: Argument of type '{ center: google.maps.LatLng; zoom: number; mapId: string; }' is not assignable to parameter of type 'MapOptions'. Object literal may only specify known properties, and 'mapId' does not exist in type 'MapOptions'.
Powyższy błąd można poprawić, korzystając z poniższych schematów przesyłania.
{ center: {lat: 30, lng: -110}, zoom: 8, mapId: '1234' } as google.maps.MapOptions
Pakiety @types o konfliktujących się nazwach
Niektóre biblioteki mogą używać pakietu innego niż @types/google.maps, co może powodować konflikty. Aby uniknąć problemów z niezgodnymi typami, użyj opcji kompilatora skipLibCheck.
{
"compilerOptions": {
"skipLibCheck": true
}
}
Określanie typeRoots
Niektóre platformy, takie jak Angular, mogą wymagać określenia typeRoots opcja kompilatora uwzględniająca typy zainstalowane z @types/google.maps i wszystkie pozostałe „@type” przesyłek.
{
...
"compilerOptions": {
...
"typeRoots": [
"node_modules/@types",
],
...
}
}