Declare a constructor inside an interface, and you will get a simple method with the name "constructor". The same thing will happen if you create a new method inside the interface: you'll get a simple method named "new".

Instead, the intent was probably to specify that the type did not originate from a TypeScript file. In such cases, just use the declare class syntax.

Noncompliant Code Example

interface TypeDeclaredElsewhere {
  someMethod(): number;
  new(b: boolean): TypeDeclaredElsewhere; // Noncompliant
  constructor(b: boolean): void; // Noncompliant
}

Compliant Solution

declare class TypeDeclaredElsewhere {
  someMethod(): number;
  constructor(b: boolean);
}