鉴于:
class BaseClass<T extends string | number> { public myFunc(): T = {} }
我可以通过以下方式实现专业化:
class StringBaseClass extends BaseClass<String> { }
并创建一个新实例并myFunc
通过以下方式调用:
new StringBaseClass().myFunc()
我不知道为什么,但我一直认为你可以通过某种类型别名来实现这种专业化,这种类型别名是类型擦除的,它实际上并没有创建一个全新的类类型,但仍允许我创建StringBaseClass
这个功能存在吗?(也许我记得另一种语言 - 也许是 Scala?)
您正在寻找TypeScript 4.7 中引入的实例化表达式:
您可以使用它
new StringBaseClass()
来创建类型的实例BaseClass<string>
。或者如果你真的只想要一个类型别名,你当然可以写
但您仍然必须通过 创建实例
new BaseClass()
。您可以创建一个变量
操场