CodeQL 文档

可疑的函数名声明

ID: js/suspicious-method-name-declaration
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - correctness
   - typescript
   - methods
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

在 TypeScript 中,关键字 constructornew 用于成员声明分别在类和接口中声明构造函数。但是,在接口中使用名称 new 或在类中使用 constructor 进行成员声明,将声明一个名为 newconstructor 的普通方法,而不是构造函数。类似地,关键字 function 用于在某些上下文中声明函数。但是,在类或接口成员声明中使用名称 function 将声明一个名为 function 的方法。

建议

将类声明为类,而不是接口。在类中使用关键字 constructor 来声明构造函数,在接口中使用关键字 new 来声明构造函数,并且在接口中声明调用签名时不要使用 function

示例

下面的示例声明了一个接口 Point,它有两个字段和一个名为 constructor 的方法。该接口没有声明一个名为 Point 的类,其中包含一个构造函数,这很可能是开发者想要创建的。

declare class Point {
   x: number;
   y: number;
   constructor(x : number, y: number);
}

下面的示例是上面示例的修复版本,其中接口改为声明为类,从而描述了开发者在最初想要使用的类型。

interface Point {
   x: number;
   y: number;
}

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私