跳至主要内容

禁止不安全的声明合并

禁止不安全的声明合并。

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"
}
};

在游乐场中尝试此规则 ↗

示例

interface Foo {}

class Foo {}
在游乐场中打开

选项

此规则不可配置。

何时不使用它

如果您的项目有意定义具有不安全声明合并模式的类和接口,则此规则可能不适合您。您可以考虑使用 ESLint 禁用注释 针对这些特定情况,而不是完全禁用此规则。

进一步阅读

资源