我看到文档里面写了两种:
function create<T>(c: new() => T):T{
return new c()
}
和
function create<T>(c: {new(): T}):T{
return new c()
}
这两种,new() => T
和{new(): T}
又什么区别?
第二种的{new(): T}
改成{new(): T, a: number}
这个该怎么传递参数呢?
1
beny2mor 2018-10-24 15:39:38 +08:00
第一种是方法签名,表示 c 可以使用 new c()调用
第二种应该是类要实现{new(): T}这个接口 |
2
noe132 2018-10-24 16:18:32 +08:00
create2 基本等价于 newable interface
interface C2<T> { new (): T } const create2 = <T>(c: C2<T>): T => new c() 这两者表达的意思是相等的 let func = create1 func = create2 不会报错 如果还希望加其他限制就得使用 create2 这种方式。 |
3
Pastsong 2018-10-24 16:21:46 +08:00
用 class 关键字吧
|