web-dev-qa-db-ja.com

TypeScriptコンパイラー引数 'skipLibCheck'の使用

skipLibCheckTypeScriptコンパイラー引数の詳細説明を探して、これをtrueに設定することの安全性を判断しています。 =。私が見つけた最も詳細な説明は次のとおりです。

新しい--skipLibCheck TypeScript 2.0には、宣言ファイル(拡張子.d.tsのファイル)の型チェックをスキップする新しい--skipLibCheckコンパイラオプションが追加されています。プログラムに大きな宣言ファイルが含まれている場合、コンパイラは、エラーを含まないことが既にわかっている宣言の型チェックに多くの時間を費やし、宣言ファイルの型チェックをスキップすることでコンパイル時間を大幅に短縮できます。

1つのファイルの宣言は他のファイルの型チェックに影響を与える可能性があるため、-skipLibCheckが指定されている場合、一部のエラーが検出されない場合があります。たとえば、非宣言ファイルが宣言ファイルで宣言された型を拡張する場合、宣言ファイルがチェックされたときにのみ報告されるエラーが発生する場合があります。ただし、実際にはこのような状況はまれです。

エラーを含まないと見なされるファイルを入力する必要がないコンパイラから明らかにパフォーマンス上の利点が得られることを理解していますが、このフラグを使用して、宣言ファイルに関連してコンパイラから出力されるエラーを回避することができます問題。

このフラグを使用してこれを回避すると、アプリケーションの入力の整合性が低下しますか?

16
Daniel Lowman

質問を簡潔に言い換えると:

[skipLibCheckを有効にする]ことで、アプリケーションの入力の整合性が確実に低下しますか?

はい、そうです。ただし、代替がコンパイルされないアプリケーションである場合は、便利なフラグになります。

TypeScript自体はかなり成熟していますが、TypeScriptコミュニティはまだ比較的若いです。多数のライブラリ、および一部のネイティブTypeScriptライブラリで使用可能な型定義がありますが、さまざまな理由で互いに互換性がない場合があります。

あなたが望むよりも厳密ではないtsconfigで型付けが構築されているライブラリをインポートすることができます。

2つのライブラリで同じタイプが定義されているが、互換性がないことがわかります。 BufferのPolyfillに独自の型指定を提供するライブラリをインポートしましたが、互換性がないためにアプリケーション全体がコンパイルに失敗しました。

--skipLibCheckを有効にすると、これらの問題を回避できます。オンにすると、TypeScriptがインポートされたライブラリ全体のタイプチェックを実行できなくなります。代わりに、TypeScriptは、これらの型に対して使用するコードの型チェックのみを行います。つまり、インポートされたライブラリの互換性のない部分を使用していない限り、それらは問題なくコンパイルされます。

tl; dr、はい、--skipLibCheckは型チェックを低下させます。理想的には使用しません。しかし、すべてのライブラリが完全な型をまだ提供しているわけではないので、それをスキップするといいかもしれません。

5
ProdigySim