TypeScript là một tập hợp con lớn hơn của JavaScript được biên dịch thành JavaScript thuần tuý. Đoạn mã dưới đây minh hoạ cách sử dụng đơn giản của Google Maps bằng cách sử dụng 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
});
}
Bắt đầu
Dự án DefinitelyTyped là một dự án nguồn mở duy trì tệp khai báo loại cho nhiều gói, bao gồm cả Google Maps. Bạn có thể cài đặt các tệp khai báo JavaScript của Google Maps (xem tệp nguồn trên GitHub) bằng NPM từ gói @types/google.maps.
npm i -D @types/google.maps
Các tính năng trong giai đoạn thử nghiệm alpha và beta
Chiến lược phát hành đĩa đơn loại thường không có thuộc tính, hàm hoặc lớp trong alpha hoặc bản phát hành beta. Trong nhiều trường hợp như vậy, đối tượng có thể được truyền sang loại chính xác.
Lỗi sau đây là do thuộc tính beta mapId
cho MapOptions
gây ra.
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'.
Bạn có thể sửa lỗi ở trên bằng cách truyền nội dung ở bên dưới.
{ center: {lat: 30, lng: -110}, zoom: 8, mapId: '1234' } as google.maps.MapOptions
Các gói @types xung đột
Một số thư viện có thể sử dụng một gói khác ngoài @types/google.maps, điều này có thể gây ra xung đột. Sử dụng skipLibCheck trình biên dịch để tránh các vấn đề với loại không nhất quán.
{
"compilerOptions": {
"skipLibCheck": true
}
}
Chỉ định typeRoots
Một số khung như Angular có thể yêu cầu chỉ định typeRoots tuỳ chọn trình biên dịch để bao gồm các loại được cài đặt từ @types/google.maps và tất cả các "@types" khác .
{
...
"compilerOptions": {
...
"typeRoots": [
"node_modules/@types",
],
...
}
}