如何检查浏览器是否在Typescript代码中支持PaymentRequest API

问题描述 投票:0回答:1

是否有一种方法可以强制打字稿的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'.

angular typescript browser payment-request-api
1个回答
0
投票

您有几个选择。

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

由于断言是potentially little white lies to the compiler,因此不理想。

© www.soinside.com 2019 - 2024. All rights reserved.