【发布时间】:2019-09-02 07:47:41
【问题描述】:
在 TypeScript 中,class 关键字同时引入了值和类型:
class Plain { };
const plain: Plain = new Plain();
有没有办法让函数返回既是类型又是值的东西?
问这个问题的另一种方式是:有没有办法在下面声明createClass 的类型以便const a2: Animal = new Animal() 进行类型检查?
declare function createClass<T extends string>(t: T): (new () => { type: T });
const Animal = createClass("animal");
const a1 = new Animal();
const a2: Animal = new Animal(); // Error: 'Animal' refers to a value, but is being used as a type here.
const a3: InstanceType<typeof Animal> = new Animal(); // OK but verbose, even if I make a type alias
【问题讨论】:
标签: typescript