Googleクロージャコンパイラで遊んでいる間に、間違った変数タイプの警告をコンパイラに強制できない場合がありました。私は次のサンプルを使用しました:Googleクローズコンパイラのタイプアノテーション
そして、期待されるタイプの警告を与えるのではなく、完全にコンパイルします。しかし、あなたが使用する場合:
pending[1] = {
name: 'Second Name',
toke: 'Second Token'
}
予想されるタイプの不一致の警告が表示されます。
push
は組み込み関数なので型チェックが定義されていない可能性が高いと私は理解しています。 pending
を配列pendingItem
として定義すると、それが強制されることが予想されますが、デフォルトではそうではありません。
push
のような既に定義された関数に型チェックを追加することが可能かどうかという問題は、上記の例では警告が出ることです。同様の結果を得る方法の1つは、タイプを強制するためにdummyItem
の前に/** @type {pendingItem} */
を追加することですが、教育目的のために、タイプチェックをpush
(またはより厳密にはpending
という定義にする) 。
また、誰かがオブジェクトプロパティの名前を変更する背後にあるロジックについて説明できますか?上の例をコンパイルすると、dummyItem
のプロパティーname
の名前は変更されませんが、token
からa
に変更されます。