前提
typescript で mongoDB ドライバを使って nodejs 上のプログラムを開発しています。
typescript 初心者なので、この際、わからないことを置き去りにせずに学んでみようと思いました。しかし、 mongoDB ドライバの型宣言を解釈しようとしてつまずいております。
Filter→WithId→EnhancedOmitまで降りたところで、その定義の内容が解釈できず困っております。
実現したいこと
EnhancedOmitの定義に記載されている
EnhancedOmit<TRecordOrUnion, KeyUnion>: string extends keyof TRecordOrUnion ? TRecordOrUnion : TRecordOrUnion extends any ? Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>> : never
の意味を解釈できるようになりたいです。
発生している問題・エラーメッセージ
演算子の結合関係
まず、演算子の結合関係(特に三項演算子)がわかりません。式にカッコを付けて確認したいのですが、
上記は以下と等価でしょうか
EnhancedOmit<TRecordOrUnion, KeyUnion>: ((string extends (keyof TRecordOrUnion))) ? TRecordOrUnion :
((TRecordOrUnion extends any) ? (Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>> ): never))
この演算子の結合度を定義した仕様書はどこかにあるのでしょうか?
extends keyof
ぐぐると extends keyof はジェネリックの引数側で出現するという記事は見つかる(ex. https://teratail.com/questions/151210) のですが、上記のように型の定義側に出現した場合の意味がわかりません。
never
実は全く調べてないのですが、 never の意味もついでに教えていただけると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/14 22:26
2022/07/19 12:56