typescript 2.3.4从构造函数

时间:2017-06-07 00:42:05

标签: class typescript extends anonymous-class typescript2.3

基本上,我在问为什么不能编译:

interface Constructor<T> {
  new (...args: any[]): T;
}

function ConstructorFactory<T>(t: T) {
  return t as any as Constructor<T>; // pretend we build a new class surrounding t somehow
}

class A extends ConstructorFactory({a: 11}) {

}

function AFactory<T>(t: T) {
  return class AnonymousA extends ConstructorFactory(t) {

  };
}

playground

错误是AnonymousA的行,并说:

Base constructor return type 'T' is not a class or interface type.

我无法掌握的主要原因是我能够定义class A好,但不能定义AnonymousA。生成的javascript看起来非常相似,所以我非常确定这是一个bug,匿名类和常规类之间的细微差别,或者我还没有学过类型的东西。我的赌注是第三种选择?

对于上下文,这来自于尝试将immutablejs记录用作类。关于这个问题有很多帖子没有用,但我还没有找到任何人解释我认为可能是一个更简单的例子?

另外,我只是快速写了ConstructorFactory草图,我知道它实际上并没有返回Constructor<T>。但我非常确定打字稿会将其视为正确的类型。

感谢您的帮助!对不起,如果这是一个重复的问题。

0 个答案:

没有答案