首页 > 解决方案 > 如何检查 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'.

标签: angulartypescriptbrowserpayment-request-api

解决方案


你有几个选择。

理想:更新 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) {

不理想,因为断言对编译器来说可能是小小的善意的谎言


推荐阅读