angular - วิธีการใช้ GeolocationPosition อย่างถูกต้องใน TypeScript?
เราต้องการเข้าถึงตำแหน่งของผู้ใช้โดยใช้ Geolocation API
โค้ดตัวอย่างนี้ทำงานได้ดี:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position: GeolocationPosition) => console.log(position));
}
VSCode ก็ไม่แสดงข้อผิดพลาดหรือคำเตือนใด ๆ แต่ Angular CLI จะโยนข้อผิดพลาดนี้:
ไม่สามารถหาชื่อ 'GeolocationPosition' ได้
navigator.geolocation.getCurrentPosition((position: GeolocationPosition) => console.log(position));
โครงการกำลังใช้สิ่งต่อไปนี้:
- Angular 11.0.6
- tslib 2.0.0
- ts-node 8.3.0
- tslint 6.1.0
- ไทป์สคริปต์ 4.0.2
นอกจากนี้ การตรวจสอบประเภทแบบ strict ถูกเปิดใช้งานใน Angular CLI
วิธีการใช้ประเภทนี้และประเภทอื่น ๆ จาก API นั้นอย่างถูกต้อง?
คำตอบ #1
การรัน TypeScript ในเวอร์ชัน 4.0.x จะปรากฏ Position เป็น typename แต่ดูเหมือนว่าได้ถูกเปลี่ยนชื่อเป็น GeolocationPosition ในเวอร์ชัน 4.1.x หาคู่มือใด ๆ ไม่พบว่าทำไมพวกเขาทำแบบนั้น ดูได้ที่: https://stackoverflow.com/a/66005573/510048.
แนะนำให้อัปเดตเป็นเวอร์ชันล่าสุดของ Typescript (ปัจจุบันคือ 4.2.3)
คำตอบ #2
คุณควรจะสามารถใช้ประเภท Position ดั้งเดิมได้:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position: Position) => console.log(position));
}
