【发布时间】:2021-04-24 23:49:13
【问题描述】:
我们希望使用Geolocation API 访问用户的位置。
这个 sn-p 工作正常:
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
在 Angular CLI 中还启用了 strict 类型检查
如何正确使用此类型和该 API 中的其他类型?
【问题讨论】:
-
有时更容易让 TS 推断类型
navigator.geolocation.getCurrentPosition((position) => console.log(position));。这样TS会自动正确设置类型 -
但是如果我将值传递给一个函数,例如
this.log(position);并且方法如下所示:log(position: GeolocationPosition): void { console.log(position); }我仍然需要函数定义中的类型。如果我简单地使用log(position) { },编译器会说position的类型丢失,当我添加:any时,方法中的类型是未知的。希望你能理解我的困境,@OwenKelvin
标签: angular typescript w3c-geolocation