web-dev-qa-db-ja.com

TypeScriptでキーワードを宣言する目的

declareキーワードの目的は何ですか?

type Callback = (err: Error | String, data: Array<CalledBackData>) => void;

vs.

declare type Callback = (err: Error | String, data:Array<CalledBackData>) => void;

TSのdeclareキーワードの目的を説明するドキュメントが見つかりません。

30
Alexander Mills

私がグーグルから得た最初の結果は示唆しています:

Declareキーワードは、TypeScriptファイルから発信されていない可能性のある変数を定義する環境宣言に使用されます。

http://blogs.Microsoft.co.il/gilf/2013/07/22/quick-tip-TypeScript-declare-keyword/

5
Scheme

これが実際の例です。

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と言ってコンパイルされません。だから、それがアンビエントの意味だと思います。

10
Sean Bradley

delcareキーワードは、*。d.tsなどの宣言型ファイルを持たないライブラリをインポートするときに使用します

その後、vs eslintは構文とコンテキストをチェックせず、デフォルトでtscコンパイラを使用する場合、構文エラーの削除を宣言する正当な理由を渡すことができます。

0
jinjun Su