Tratando de hacer esto en Angular 13:
private _stripe:StripeFactory = window['Stripe']Y genera este error:
El elemento tiene implícitamente un tipo 'cualquiera' porque la expresión de índice no es del tipo 'número'
¿Alguna idea sobre cómo solucionar este problema?
Yo añadí:
"suppressImplicitAnyIndexErrors": true, A tsconfig.json , pero los errores de pelusa aún persisten.
En vez de
"suppressImplicitAnyIndexErrors": true, en tscongfig.json , se recomienda utilizar un comentario @ts-ignore en la línea anterior del archivo .ts:
// @ts-ignore private _stripe:StripeFactory = window['Stripe'] Pero definitivamente hay una forma más 'angular' de hacer lo que está tratando de hacer, pero no estoy muy seguro de qué es eso. Simplemente extrapolando el nombre del tipo, tendría una StripeFactory en StripeService que llama a un método getStripe() que tiene acceso a su configuración y clave de Stripe, usándolo para capturar el objeto Stripe global. Deberá cargar Stripe por separado e inyectar StripeService en los componentes que lo necesitan.
Vea esta publicación de desarrollo para esta solución específica de Stripe en detalle .
O si desea quedarse con la ventana, puede agregarla a su matriz de proveedores en el módulo:
providers: [ { provide: Window, useValue: window } ]Luego puede inyectarlo directamente en su servicio:
constructor(private window: Window) { // ....do whatever you're gonna do }