可疑的函数名声明¶
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
在 TypeScript 中,关键字 constructor
和 new
用于成员声明分别在类和接口中声明构造函数。但是,在接口中使用名称 new
或在类中使用 constructor
进行成员声明,将声明一个名为 new
或 constructor
的普通方法,而不是构造函数。类似地,关键字 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;
}