Typescript:创建泛型类型参数的示例时出错

5jvtdoz2  于 2023-05-01  发布在  TypeScript
关注(0)|答案(1)|浏览(194)

在下面的TypeScript片段中:

class TBase { }

class Foo<T extends TBase>
{
    f() :T {
        return new T();
    }
}

new()行抛出以下编译错误:
“T”仅引用类型,但在此处用作值。
请问我错过了什么?

rqdpfwrv

rqdpfwrv1#

这是因为T是一个类型参数,而不是一个不能用于创建对象的新示例的具体类型。每当使用new关键字时,您都在尝试创建T的新示例,这是不允许的,因为T是一种类型,而不是值。
相反,在创建Foo的示例时,为T定义一个从TBase扩展的具体类型,然后使用它创建一个新示例。

相关问题