typescript/no-misused-new Correctness
作用
强制 new 和 constructor 的定义有效。该规则可防止类定义名为 new 的方法,防止接口定义名为 constructor 的方法,并防止接口定义返回该接口自身的构造签名。
为什么这不好?
JavaScript 类可以定义一个构造函数方法,当类实例被新建时会运行该方法。
TypeScript 允许描述静态类对象的接口定义 new() 签名(尽管这在实际代码中很少使用)。该构造签名应返回构造出的实例类型,而不是构造函数对象本身的接口。 对于刚接触 JavaScript 类和/或 TypeScript 接口的开发者来说,可能有时会混淆何时使用 constructor 或 new。
示例
以下是此规则的错误代码示例:
typescript
declare class C {
new(): C;
}typescript
interface I {
new (): I;
}typescript
interface I {
constructor(): void;
}以下是此规则的正确代码示例:
typescript
declare class C {
constructor();
}typescript
class C {}
interface I {
new (): C;
}如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"rules": {
"typescript/no-misused-new": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"typescript/no-misused-new": "error",
},
});bash
oxlint --deny typescript/no-misused-new版本
此规则于 v0.0.7 中添加。
