Как проверить, поддерживается ли API PaymentRequest браузером в коде Typescript - PullRequest
0 голосов
/ 30 сентября 2019

Есть ли способ заставить 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 Ответ

1 голос
/ 30 сентября 2019

У вас есть несколько вариантов.

Идеально: Обновить 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) {

Не идеально, так как утверждения потенциально мало белой лжи для компилятора .

...