Square支付形式对象的全局参考到Angular

时间:2018-05-22 22:36:37

标签: angular typescript square

Angular 4/5/6没有实现Square结帐表单,所以我试图通过创建测试组件来弄清楚这可能带来什么,但我无法弄清楚如何获取将它们的全局对象SqPaymentForm引用到Angular中并让TypeScript不会抛出错误,说它在窗口对象上不存在window.SqPaymentForm,因为它确实存在。

有人能指出我如何让​​TypeScript识别window.SqPaymentForm存在吗?

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [],
  providers: [
    { provide: 'SQUARE', useFactory: getSquare }
  ]
})
export class SquareModule { }

export function getSquare() {
  return (typeof window !== undefined) 
      // TypeScript indicates it doesn't exist on Window 
      ? window.SqPaymentForm 
      : null;
}

1 个答案:

答案 0 :(得分:0)

想出来我必须创建自己的打字,但无法弄清楚如何通过.d.ts加载它,所以,现在,它在Square模块中声明:

declare global {
  interface Window {
    SqPaymentForm: any;
  }
}

或将window.SqPaymentForm替换为:

(<any>window).SqPaymentForm