angular - 如何检查 Typescript 代码中的浏览器是否支持 PaymentRequest API
问题描述
有没有办法强制打字稿的window
对象解析PaymentRequest
属性?这是我的角度组件中的代码示例:
if (window.PaymentRequest) {
// This browser supports Payment Request
} else {
// Browser does not support Payment Request
}
这是我得到的一个错误:
error TS2339: Property 'PaymentRequest' does not exist on type 'Window'.
解决方案
你有几个选择。
理想:更新 TypeScript
更新到最新的 TypeScript,因为它附带定义:https ://github.com/microsoft/TypeScript/blob/20e2be1e1a0fb2a2f481410d24e4cae915e5ece7/lib/lib.dom.d.ts#L11549
不理想1:添加局部定义
添加一个global.d.ts
在其中扩展interface Window
以具有相应 API,从上面提到的 lib.d.ts 复制粘贴。
不理想,因为如果其他人决定升级 TypeScript,您将在未来进行大量复制粘贴。
不理想 2:只使用一个断言
if ((window as any).PaymentRequest) {
不理想,因为断言对编译器来说可能是小小的善意的谎言。
推荐阅读
- vue.js - 如何在 vue.js 中使用 v-calendar 触发更改事件
- python - Scrapy抓取嵌套网址
- android - 我们如何改变使用 Paging 3 android 加载的项目?
- java - Cognito 和 Java - 用户名不能是电子邮件格式,因为用户池是为电子邮件别名配置的
- bash - 如何在启动时在 Armbian 上激活虚拟环境?
- c# - 空 Post 请求 (.NetCore 3.1)
- python - 使用 dataframe2 (pandas, python) 中设置的条件从 dataframe1 中提取值_第 2 部分
- google-bigquery - BigQuery 在创建带有“_ads”后缀的表名后返回未知错误
- google-cloud-platform - 您如何扩展 Google Cloud Document AI 处理?
- visual-studio-code - 观察者排除特定文件夹