typescript/prefer-optional-chain 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
默认值: false
允许会改变表达式返回类型的自动修复。此选项被认为是不安全的,因为它可能导致构建失败。
checkAny
type: boolean
默认值: true
检查类型为 any 的操作数,在检查“宽松布尔”操作数时。
checkBigInt
type: boolean
默认值: true
检查类型为 bigint 的操作数,在检查“宽松布尔”操作数时。
checkBoolean
type: boolean
默认值: true
检查类型为 boolean 的操作数,在检查“宽松布尔”操作数时。
checkNumber
type: boolean
默认值: true
检查类型为 number 的操作数,在检查“宽松布尔”操作数时。
checkString
type: boolean
默认值: true
检查类型为 string 的操作数,在检查“宽松布尔”操作数时。
checkUnknown
type: boolean
默认值: true
检查类型为 unknown 的操作数,在检查“宽松布尔”操作数时。
requireNullish
type: boolean
默认值: false
在检查“宽松布尔”操作数时,跳过那些未使用 null 和/或 undefined 类型声明的操作数。
如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
{
"rules": {
"typescript/prefer-optional-chain": "error"
}
}oxlint --type-aware --deny typescript/prefer-optional-chain