gpt4 book ai didi

javascript - Typescript 中的 new() 是什么?

转载 作者:可可西里 更新时间:2023-11-01 01:28:31 26 4
gpt4 key购买 nike

在官方文档中遇到了new() here关于泛型。

这里是代码上下文:

function create<T>(c: { new(): T; } ): T {
return new c();
}

上面的代码被转译成下面的 JavaScript 代码:

function create(c) {
return new c();
}

new() 是 JavaScript 中的非法语法。在 TypeScript 中它是什么意思?

此外,{new(): T; 是做什么的? } 是什么意思?我知道它一定是一种类型,但如何呢?

最佳答案

new() 描述了 typescript 中的构造函数签名。这意味着它描述了构造函数的形状。以 {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}

关于javascript - Typescript 中的 new() 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39622778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com