首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS DeviceOrientationEvent API &类型记录

iOS DeviceOrientationEvent API &类型记录
EN

Stack Overflow用户
提问于 2021-09-30 11:51:09
回答 1查看 439关注 0票数 2

我为@on: iOS回调设置了以下设置,该回调旨在向用户请求iOS Safari设备的iOS API的权限:

代码语言:javascript
复制
const setDeviceOrientationPermission = async () => {
  if (typeof DeviceOrientationEvent.requestPermission === 'function') {
    deviceOrientationPermissionState.value = await DeviceOrientationEvent.requestPermission()
  }
}

当我在Vue 3+ Tyepscript世界做这件事时,我设置了deviceOrientationPermissionState,这是一个参考文献(更多关于参考文献:https://v3.vuejs.org/guide/reactivity-fundamentals.html)

这些代码都在工作,当加载Safari iOS或webkit iOS浏览器时,需要获得权限,在回调时,我可以访问设备的方向。

然而,打字稿不喜欢。

打字本给了我这个错误:

代码语言:javascript
复制
Property 'requestPermission' does not exist on type '{ new (type: string, eventInitDict?: DeviceOrientationEventInit | undefined): DeviceOrientationEvent; prototype: DeviceOrientationEvent; }'.

当我按照我的打字本知识最好地修复错误时,代码就不再工作了。

所以..。我开始将接口声明为:

代码语言:javascript
复制
declare interface DeviceOrientationEvent {
  webkitCompassHeading: number | null
  webkitCompassAccuracy: number | null
  requestPermission: () => Promise<PermissionState>
}

enum PermissionState {
  "granted",
  "denied",
}

但是,打字稿还是不喜欢的。

有人能告诉我我做错了什么,如何在Safari上工作,也允许我和打字稿保持最好的伙伴关系吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-04 17:50:45

今天在用VS代码编译我们的ReactJS应用程序时遇到了同样的问题。为了绕过TypeScript中缺少的方法,我只为这一行将DeviceOrientationEvent抛给了任意一个。

代码语言:javascript
复制
const setDeviceOrientationPermission = async () => {
  if (typeof (DeviceOrientationEvent as any).requestPermission === 'function') {
    deviceOrientationPermissionState.value = await (DeviceOrientationEvent as any).requestPermission()
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69391746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档