Это просто случай неактуальной библиотеки типов?
Да, определения типов DefinitherTyped для Stripe. js действительно выглядят устаревшими, как вы можно увидеть здесь:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/stripe-v3/index.d.ts#L124 -L132
В качестве временной меры вы можете использовать @ts-ignore
, и код должен компилироваться и работать нормально. Но лучшим долгосрочным решением было бы использовать новый модуль Stripe npm для загрузки Stripe. js, который включает собственные определения типов:
https://github.com/stripe/stripe-js
Определения типов для redirectToCheckout
в @stripe/stripe-js
актуальны и будут оставаться актуальными, поскольку библиотека поддерживается Stripe:
https://github.com/stripe/stripe-js/blob/master/types/stripe-js/checkout.d.ts
Если вы используете @stripe/stripe-js
, вам больше не нужно включать тег Stripe. js <script>
в свой HTML. Все, что вам нужно сделать, это импортировать модуль и вызвать функцию loadStripe
:
import {loadStripe} from '@stripe/stripe-js';
const stripe = await loadStripe('pk_test_TYooMQauvdEDq54NiTphI7jx');
Это будет включать Stripe. js и создать экземпляр stripe
со всеми последними типами. Библиотека также корректно обрабатывает среды рендеринга на стороне сервера без какой-либо дополнительной настройки.