Машинописный текст "new (... args: any []) => T" vs "{new (... args: any []): T}" - PullRequest
0 голосов
/ 22 марта 2019

В чем разница между new(...args: any[]) => T и { new(...args: any[]): T } и какую мне использовать?

1 Ответ

0 голосов
/ 22 марта 2019

Они являются псевдонимами, и они оба не поддерживают статические поля:

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 будет лучше, но нет большой разницы

Детская площадка

...