declare
キーワードの目的は何ですか?
type Callback = (err: Error | String, data: Array<CalledBackData>) => void;
vs.
declare type Callback = (err: Error | String, data:Array<CalledBackData>) => void;
TSのdeclare
キーワードの目的を説明するドキュメントが見つかりません。
私がグーグルから得た最初の結果は示唆しています:
Declareキーワードは、TypeScriptファイルから発信されていない可能性のある変数を定義する環境宣言に使用されます。
http://blogs.Microsoft.co.il/gilf/2013/07/22/quick-tip-TypeScript-declare-keyword/
これが実際の例です。
TypeScript React Webpack Hot Middlewareを使用するアプリがあります。WebpackHot MiddlewareはTypeScriptで記述されていませんが、古き良きJavaScriptです。そのため、TypeScriptコンパイラがチェックできる型宣言はありませんに対して。
したがって、コードを実行すると、Webpack Hot Middlewareのオブジェクトmodule
が存在します。また、古き良きJavaScriptでありながら、派手な新しいTypeScript = Reactアプリ。
module
オブジェクトにも 'module.hot'などのキーがあり、キーには値を設定できますが、VSCodeのTypeScript設計時コンパイラは少なくとも、その下にproperty 'hot' does not exist
と赤い波線を描画します
しかし、それは存在すると私は言います。
TypeScriptコンパイラに同意させるには、次のように宣言します。
declare let module: any
既存のmodule
オブジェクトはany
のタイプになりました。これによりTypeScriptコンパイラーが幸せになり、赤い波線が消えて、今度は、世界。
また、キーワードdeclare
を削除してlet module: any
と記述するだけでは、'module' already exists
と言ってコンパイルされません。だから、それがアンビエントの意味だと思います。
delcareキーワードは、*。d.tsなどの宣言型ファイルを持たないライブラリをインポートするときに使用します
その後、vs eslintは構文とコンテキストをチェックせず、デフォルトでtscコンパイラを使用する場合、構文エラーの削除を宣言する正当な理由を渡すことができます。