TypeScript ist eine typisierte Obermenge von JavaScript, die in einfachen JavaScript-Code kompiliert wird. Das folgende Snippet veranschaulicht die einfache Verwendung von Google Maps mithilfe von 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
});
}
Informationen für Einsteiger
DefinitelyTyped ist ein Open-Source-Projekt, in dem Typdeklarationsdateien für viele Pakete gepflegt werden, darunter auch für Google Maps. Die Google Maps-JavaScript-Deklarationsdateien (siehe Quelldateien auf GitHub) können über NPM aus dem Paket @types/google.maps installiert werden.
npm i -D @types/google.maps
Alpha- und Betafunktionen
Die Typen haben in der Regel nicht die Eigenschaften, Funktionen oder Klassen, die in Alpha- oder Betaversionen verfügbar sind. In vielen Fällen kann das Objekt in den richtigen Typ umgewandelt werden.
Der folgende Fehler wird durch die Eigenschaft (Beta) mapId
für MapOptions
verursacht.
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'.
Der Fehler oben kann mit der folgenden Umwandlung korrigiert werden.
{ center: {lat: 30, lng: -110}, zoom: 8, mapId: '1234' } as google.maps.MapOptions
In Konflikt stehende „@types“-Pakete
Einige Bibliotheken verwenden möglicherweise ein anderes Paket als @types/google.maps. Das kann zu Konflikten führen. Verwenden Sie die Compiler-Option skipLibCheck, um Probleme mit abweichenden Typen zu vermeiden.
{
"compilerOptions": {
"skipLibCheck": true
}
}
„typeRoots“ angeben
Für einige Frameworks wie Angular muss möglicherweise die Compiler-Option typeRoots angegeben werden, um Typen einzuschließen, die aus @types/google.maps und allen anderen „@types“-Paketen installiert wurden.
{
...
"compilerOptions": {
...
"typeRoots": [
"node_modules/@types",
],
...
}
}