(& lt; any>窗口).SomeLibrary.SomeMethod (__arg1、最长)

(<any>window).SomeLibrary.SomeMethod(arg1,arg2)?

本文关键字:最长 SomeMethod arg1 窗口 lt any SomeLibrary      更新时间:2023-09-26

在Angular2中使用(<any>window)是什么?

我在研究Stripe支付库时发现了它:

(<any>window).Stripe.card.createToken({
  number: this.cardNumber,
  exp_month: this.expiryMonth,
  exp_year: this.expiryYear,
  cvc: this.cvc
}, (status: number, response: any) => {
  if (status === 200) {
    this.message = `Success! Card token ${response.card.id}.`;
  } else {
    this.message = response.error.message;
  }
});
http://blog.mgechev.com/2016/07/05/using-stripe-payment-with-angular-2/

看起来像是让你在控制器中使用全局对象的东西,但我真的不明白细节。似乎找不到其他答案了。

有时候你会发现你对值,而不是TypeScript。通常情况下,当你知道某些实体的类型可能比其当前类型更具体。

类型断言是告诉编译器"相信我,我知道我是什么"的一种方式做。"

可能有两种形式:

(<any>window)

(window as any)

参见https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions

另一种方法是使用Square bracket syntax

window['Stripe'].card...

在这种情况下,typescript编译器也可以正常工作

<any>表示TypeScript中的强制类型转换,因此将window转换为any表明编译器不再受限于它认为窗口对象是什么以及它具有什么属性。

(<any>window)正在阻止编译时类型错误检查将调用标记为无效。