Typescript "new(...args: any[]) => T" 与“{ new(...args: any[]): T }”
Typescript "new(...args: any[]) => T" vs "{ new(...args: any[]): T }"
new(...args: any[]) => T
和 { new(...args: any[]): T }
有什么区别,我应该使用哪一个?
它们是别名,它们都不支持静态文件:
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
会更好,但没有太大区别
new(...args: any[]) => T
和 { new(...args: any[]): T }
有什么区别,我应该使用哪一个?
它们是别名,它们都不支持静态文件:
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
会更好,但没有太大区别