我遇到了new()
在官方文件中here https://www.typescriptlang.org/docs/handbook/generics.html关于泛型。
这是代码上下文:
function create<T>(c: { new(): T; } ): T {
return new c();
}
上面的代码被转换为以下 JavaScript 代码:
function create(c) {
return new c();
}
new()
在 JavaScript 中是非法语法。它在 TypeScript 中意味着什么?
此外,什么是{new(): T; }
意思是?我知道它一定是一种类型,但是如何呢?
new()
描述打字稿中的构造函数签名。这意味着它描述了构造函数的形状。
例如采取{new(): T; }
。你说得对,它是一种类型。它是构造函数不接受参数的类的类型。考虑以下示例
function create<T>(c: { new(): T; } ): T {
return new c();
}
这意味着该函数create
接受一个参数,其构造函数不接受参数并返回类型的实例T
.
function create<T>(c: { new(a: number): T; } ): T
这意味着 create 函数采用一个参数,其构造函数接受一个数字a
并返回 T 类型的实例。
另一种解释方式是,以下类的类型
class Test {
constructor(a: number){
}
}
将会{new(a: number): Test}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)