Typescript 类型里面类的表达方式

2018-10-24 14:59:32 +08:00
 wktrf

我看到文档里面写了两种:

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}这个该怎么传递参数呢?

2647 次点击
所在节点    JavaScript
3 条回复
beny2mor
2018-10-24 15:39:38 +08:00
第一种是方法签名,表示 c 可以使用 new c()调用

第二种应该是类要实现{new(): T}这个接口
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 这种方式。
Pastsong
2018-10-24 16:21:46 +08:00
用 class 关键字吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/500664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX