typescript/prefer-optional-chain Nursery
何をしますか
論理積(&&)演算子、論理和の否定(!||)演算子、または空のオブジェクトを使用する代わりに、簡潔なオプショナルチェーン式を使用することを強制します。
このルールは、可能な限り多くのエッジケースで正しく動作していることを確認するまで「園芸(Nursery)」カテゴリにあります。このルールのロジックは複雑であり、自動修正により一部のエッジケースで論理的な変更が生じる可能性があります。
なぜ悪いですか?
TypeScript 3.7 でオプショナルチェーン(?.)が導入され、値が null や undefined になりうる場合にプロパティにアクセスするより簡潔かつ読みやすい方法が提供されました。論理積の連鎖(&&)や他のパターンではなく、オプショナルチェーンを使用することでコードの明確さが向上します。
例
このルールに対する誤りの例:
foo && foo.bar;
foo && foo.bar && foo.bar.baz;
foo && foo["bar"];
foo && foo.bar && foo.bar.baz && foo.bar.baz.buzz;
foo && foo.bar && foo.bar.baz.buzz;
foo && foo.bar.baz && foo.bar.baz.buzz;
(foo || {}).bar;このルールに対する正しい例:
foo?.bar;
foo?.bar?.baz;
foo?.["bar"];
foo?.bar?.baz?.buzz;
foo?.bar?.baz.buzz;
foo?.bar.baz?.buzz;
foo?.bar;設定
このルールは以下のプロパティを持つ設定オブジェクトを受け入れます:
allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing
type: boolean
default: false
式の戻り値型を変更する自動修正を許可します。このオプションは不安全と見なされるため、ビルドが破損する可能性があります。
checkAny
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が any のオペランドもチェックします。
checkBigInt
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が bigint のオペランドもチェックします。
checkBoolean
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が boolean のオペランドもチェックします。
checkNumber
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が number のオペランドもチェックします。
checkString
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が string のオペランドもチェックします。
checkUnknown
type: boolean
default: true
「ゆるい真偽値」のオペランドを検査する際に、型が unknown のオペランドもチェックします。
requireNullish
type: boolean
default: false
「ゆるい真偽値」のオペランドを検査する際に、null および/または undefined でない型に指定されたオペランドをスキップします。
使用方法
このルールを設定ファイルまたは CLI で有効化するには、次のように使用できます:
{
"rules": {
"typescript/prefer-optional-chain": "error"
}
}oxlint --type-aware --deny typescript/prefer-optional-chain