首页 > 解决方案 > 打字稿“新(...args:任何[])=> T”与“{新(...args:任何[]):T}”

问题描述

new(...args: any[]) => T我应该使用哪个和哪个有什么区别{ new(...args: any[]): T }

标签: typescripttypesdeclaration

解决方案


它们是别名,它们都不支持静态文件:

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会更好,但差别不大

操场


推荐阅读