typescript/no-unsafe-member-access 严谨
它的作用
此规则禁止对类型为 any 的值进行成员访问。
为什么这是不好的?
TypeScript 中的 any 类型会禁用类型检查。当你对类型为 any 的值访问成员(属性或方法)时,TypeScript 无法验证该成员是否存在,也无法确定其类型。这可能导致运行时错误。
示例
以下代码是 错误 的示例:
ts
declare const anyValue: any;
anyValue.foo; // 不安全的成员访问
anyValue.bar.baz; // 不安全的嵌套成员访问
anyValue["key"]; // 不安全的计算成员访问
const result = anyValue.method(); // 不安全的方法访问以下代码是 正确 的示例:
ts
declare const obj: { foo: string; bar: { baz: number } };
declare const unknownValue: unknown;
obj.foo; // 安全
obj.bar.baz; // 安全
obj["foo"]; // 安全
// 对 unknown 进行类型守卫
if (typeof unknownValue === "object" && unknownValue !== null && "foo" in unknownValue) {
console.log(unknownValue.foo); // 经过类型守卫后是安全的
}
// 如有必要,显式类型断言
(anyValue as { foo: string }).foo; // 显式地不安全但有意为之配置
此规则接受一个配置对象,包含以下属性:
allowOptionalChaining
type: boolean
default: false
是否允许在 any 值上使用 ?. 可选链。
当为 true 时,对 any 值的可选链将不会被标记。默认为 false。
如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"typescript/no-unsafe-member-access": "error"
}
}bash
oxlint --type-aware --deny typescript/no-unsafe-member-access