gpt4 book ai didi

javascript - 如何在 Typescript 中声明 Type 类型的变量?

转载 作者:行者123 更新时间:2023-11-28 17:02:21 25 4
gpt4 key购买 nike

我需要存储一个类型变量以便稍后动态实例化它。现在我找不到如何声明 Type 类型的变量,并且由于语言名称的原因,搜索它非常困难。但从我的发现来看,这表明没有什么可以做的,应该使用任何东西,但我不想这样做。

简单的例子:

class Foo {}

function test(bar: ???|any) {...}

test(Foo); // just the type not an instance

最佳答案

Foo 作为类型传递。当您执行 test(Foo) 时,您确实传递了一个构造函数(这是一个值而不是类型),并且该构造函数返回 Foo 类型的对象(它都引用这里有一个值和一个类型)。正确的类型是 Foo 变量的类型,而不是 Foo 类型(是的,这有点令人困惑²):

  function test(bar: typeof Foo) { /*...*/ }

或者更明确地说,您也可以直接将其键入为 Foo 构造函数:

   function test(bar: { new(): Foo; }) { /*...*/ }
<小时/>

¹注意:您无法传递类型,因为它们在代码运行时不存在,类型仅存在于编译时,而不是运行时。

<小时/>

²一个可能更清楚的例子:

  //            v the type  v the value
const value: Foo = new Foo();

关于javascript - 如何在 Typescript 中声明 Type 类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56985899/

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