2016-11-08 8 views
0

Angular2で使用する場合、(<any>window)とは何ですか?(<any>ウィンドウ).SomeLibrary.SomeMethod(arg1、arg2)?

ストライプ支払いライブラリを研究しながら、私はそれを見つけた:それはあなたが、コントローラ内部でグローバルオブジェクトを使用することができます何かが、私は本当にの詳細を理解していないよう

(<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/

が見えます。これについて他の答えを見つけることができないようです。

答えて

1

場合によっては、 の値がTypeScriptよりも多くなることがわかります。通常、これは、ある種のエンティティのタイプが現在のタイプよりも具体的である可能性があることがわかったときに発生します。

タイプアサーションは、「私は がやっているものを知って、私を信頼しています。」コンパイラに指示する方法です

それは2つの形式であるかもしれない:

(<any>window) 

(window as any) 

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

同様

+0

おかげで動作します。この場合のtypescriptですコンパイラでSquare bracket syntax

window['Stripe'].card... 

を使用しているのと同じことを行うための別の方法は、それはさらに役立ちます! – VSO

2

<any>はそうanywindowを変換すると、あなたは、もはやそれがウィンドウオブジェクトがあり、それが持っているどのような特性を考えるものにコンパイラによって拘束されていることを示していない、活字体でキャストを示します。

(<any>window)は、コンパイル時のタイプのエラーチェックがコールに無効なフラグを付けるのを妨げています。

関連する問題