Они являются псевдонимами, и они оба не поддерживают статические поля:
class X {
static staticAttr = 42;
static method() { }
attr: string;
}
interface A {
Attr1: { new (...args): X }
Attr2: new(...args: any[]) => X
}
let fn = (arg: A) => {
arg.Attr1.staticAttr // Property 'staticAttr' does not exist on type 'new (...args: any[]) => X'
(new arg.Attr1()).attr;
(new arg.Attr2()).attr;
}
{ new(...args: any[]): T
отображается TS в new(...args: any[]) => T
.Так что я думаю new(...args: any[]) => T
будет лучше, но нет большой разницы
Детская площадка