2016-12-23 6 views
1

私はすべてのlibがdeclare constの代わりにdeclare varの構文を使用している理由が不思議です。たとえばlib.d.ts:すべてのライブラリで `declare var 'を使用している理由

declare var statusbar: BarProp; 
declare var styleMedia: StyleMedia; 
declare var toolbar: BarProp; 
declare var top: Window; 
declare var window: Window; 

なぜ

declare const statusbar: BarProp; 
declare const styleMedia: StyleMedia; 
declare const toolbar: BarProp; 
declare const top: Window; 
declare const window: Window; 

は何か他のものでwindowを上書きすることができます何のコードが存在しないことを確認するには?私のtsファイルにdeclare constを使用しています。とてもうまく動作しています。

答えて

4

ほとんどのライブラリ定義は、constが追加される前に書かれました(タイプスクリプト1.4)。また、それは図書館の定義の作者との会話を待っているかもしれません。

定義ファイルではconstを誠実に使用してください。コード内の値を上書きしないようにするためです。

厳密には、constの定義をECMAScriptの定数値と一致させるだけです。そうでなければ、実際の実装ではなくコードの意見を定義しています。誰かがライブラリから変数をオーバーライドしたい場合、ライブラリの作者がそれを許可していれば、それを防ぐために定義ファイルが間違っているでしょう。たとえあなたが人々にそれを許可されるべきではないと思っても。

値を上書きできない場合は、constが型定義の不変性を宣言する正しい方法です。

+0

'DefenitlyTyped'がTS2.1構文を使用しているにもかかわらず、' DefenitlyTyped'がこの表記を使用しているため、 'TS1.4'引数に同意できません。 –

+0

はい - 管理する定義ファイルは1,000種類あり、その多くはTypeScriptがv0.8だったときに作成されました。それらを "ビルド"し、それらが表すライブラリの変更を反映するためにそれらを更新しますが、すべての構文の変更を考慮に入れてそれらを書き直すのは大変な作業です。 – Fenton

関連する問題