問題タブ [strictnullchecks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
261 参照

angular - strictNullChecks で null になる可能性があるプロパティからの型エイリアス

graphql-codegen/typescript-apollo-angularAngular アプリケーションで使用できる typescript コードを生成するために使用しています。strictNullChecks唯一の問題は、次のパターンを使用して、API によって返される内部ノードのタイプを指定することです。

私の場合、正しいsomethingとして生成されます。Maybe<Array<...>>上記のコードを有効にするとstrictNullChecks、何かが未定義/ null になる可能性があるため、機能しなくなります。

このような型エイリアスからnull/型を削除する方法に関するドキュメントを見つけることができませんでした。undefinedたぶん、これを行うには別の方法があります。

0 投票する
0 に答える
40 参照

typescript - Typescript: インクリメンタル コンパイルと strictNull チェックのファイル依存関係はどのように計算されますか

大規模な Typescript プロジェクトがあり、開発時間を支配することがある増分コンパイル時間を改善しようとしています。多くのファイルでは、すべてのimportステートメントに従うと、プロジェクトのほとんどのファイルに到達するため、インクリメンタル コンパイルは非常に遅くなる可能性があります。このグラフの接続を減らす作業を行っていますが、Typescript ファイルに加えたいくつかの変更について、インポートファイルが --incremental または watch モードで再コンパイルされないことにも気付きました。

たとえば、クラスのメソッド本体 (シグネチャは変更しない) を変更しても、そのクラスをインポートするファイルの再コンパイルは発生しません。さらに、(ソフトおよびハード)プライベートフィールドをクラスまたはファイル ローカル宣言に追加しても、インポーターの再コンパイルは発生しないようです。

ただし、mixin パターン ( https://www.typescriptlang.org/docs/handbook/mixins.html ) を使用する場合、mixin クラスを変更すると、ハード プライベート フィールドが追加されても、すべてのインポーターが再コンパイルされることに気付きました。インポート/エクスポート タイプを使用しても、依存関係に関して何の違いもないように思われますが、関連するドキュメントは見つかりませんでした。

インクリメンタル コンパイルの目的で依存関係を構成するものの正式なドキュメントはありますか? この依存関係グラフはコンパイラ (またはインクリメンタル コンパイルの出力) から取得できますか? より実際には、プライベート フィールドとメソッドの実装にコンパイルの依存関係を作成せずにミックスインを使用する方法はありますか? 関連するすべてのクラスにインターフェースを導入することによってのみこれを解決できましたが、これは非常に面倒であり、独自の問題を引き起こします。プロジェクトをサブプロジェクトに分割してプロジェクト参照を使用することはできないようです。そのような分割では循環依存関係が発生するためです。

strictNull チェックの目的で、推奨されるようにそれらをコードに徐々に導入しようとしていますが、チェックされたファイルのリストに 1 つのファイルを追加すると、推移的にインポートするすべてのファイルも追加されます (またはそう思われます)。ここで使用されている依存関係の正式なドキュメントはありますか? インクリメンタルコンパイル用のものと同じですか?