禁止不安全的声明合并
禁止不安全的声明合并。
✅
在 "plugin:@typescript-eslint/recommended"
的 ESLint 配置 中扩展此规则。
TypeScript 的“声明合并”支持将具有相同名称的单独声明合并。
类和接口之间的声明合并是不安全的。TypeScript 编译器不会检查属性是否已初始化,这会导致 TypeScript 未能检测到会导致运行时错误的代码。
interface Foo {
nums: number[];
}
class Foo {}
const foo = new Foo();
foo.nums.push(1); // Runtime Error: Cannot read properties of undefined.
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unsafe-declaration-merging": "error"
}
};
在游乐场中尝试此规则 ↗
示例
- ❌ 错误
- ✅ 正确
选项
此规则不可配置。
何时不使用它
如果您的项目有意定义具有不安全声明合并模式的类和接口,则此规则可能不适合您。您可以考虑使用 ESLint 禁用注释 针对这些特定情况,而不是完全禁用此规则。