2016-10-10 12 views
2

私のtypescript 2.0プロジェクトで厳密なヌルチェックを使用するように切り替える必要がありますが、私の依存関係(依存関係の祖父母)の入力に問題があります)。厳密なヌルチェックのオーバーライド

より詳細には、私は依存関係BCの両方がAに依存しています。これらのすべては、コード化されたTSプロジェクトで、libフォルダにあるコードとタイピングが使用されており、厳密なヌルチェックに切り替えられていません。次のように両方のBCで使用されている

interface IInterface { 
    [key: string]: string; 
} 

:厳密にはnullチェックして

import { IInterface } from 'A/lib/iinterface'; 

interface IExtended extends IInterface { 
    myOptionalProperty?: string 
} 

が、これは次のコンパイルエラーを与える次のようA

関連タイピングは以下のとおりです。

node_modules/B/lib/extended.d.ts(4,3): error TS2411: Property 'myOptionalProperty' of type 'string | undefined' is not assignable to string index type 'string' 
node_modules/C/lib/extended.d.ts(4,3): error TS2411: Property 'myOptionalProperty' of type 'string | undefined' is not assignable to string index type 'string' 

の質問は、二重その後、次のとおりです。

interface IInterface { [key: string]: string | undefined; }

私はそのような上書きすることが可能であるかどうかわからないです:

  1. 厳しいチェックに準拠するため、Aでのタイピングに変更する必要がありますこれは単に既存の型の拡張ではないため、型を使用します。可能であればどうしますか?

  2. 可能であれば、どのように彼らの地元node_modulesディレクトリにあるものBCでタイピングが私のオーバーライドされたタイピングに対してチェックされるように含まれており、ではないすべきですか?

+0

理想的なソリューションは、プロジェクト 'A'は、これらのタイピングそのものを追加持つことはもちろんである、と私はすでにその旨のPRを持っていますが、かなりあるだろうこれが受け入れられ、プロジェクト 'B'と' C'に伝播する前に、私は一時的な回避策を探しています。 – Vidar

答えて

4

使用しているライブラリのチェックをスキップするようにコンパイラに指示することは可能です。
compiler optionsは今skipDefaultLibCheckを持っている:

Don’t check a user-defined default library (*.d.ts) file’s validity.

そしてskipLibCheck

Don’t check a the default library (lib.d.ts) file’s validity.

あなたはtrueに設定されているオプションを使用してコンパイルした場合それでは、あなたが使用しているLIBSのためのエラーを取得するべきではありません。

what's new for typescript 2でそれについての詳細があります:

TypeScript 2.0 adds a new --skipLibCheck compiler option that causes type checking of declaration files (files with extension .d.ts) to be skipped. When a program includes large declaration files, the compiler spends a lot of time type checking declarations that are already known to not contain errors, and compile times may be significantly shortened by skipping declaration file type checks.

+0

ありがとう!私は解決策を探すときにこの旗に遭遇しましたが、それが何をしたかを誤って解釈しました。問題を解決し、ビルド時間も短縮します:) – Vidar