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

时间:2019-09-29 21:01:36

标签: angular typescript browser payment-request-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'.

1 个答案:

答案 0 :(得分:1)

您有一些选择。

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