gpt4 book ai didi

typescript - 如何从父类(super class)方法而不是父类(super class)类型返回子类型

转载 作者:行者123 更新时间:2023-12-02 08:10:35 25 4
gpt4 key购买 nike

我认为这是正确实现泛型的问题,但我不确定。

我在这里创建了一个代表问题的 Github 要点: https://gist.github.com/ORESoftware/66b72b4b85262d957cb03ad097e4743e

假设我有这个父类(super class):

  class A {

foo(): A {
return this;
}

}

还有几个子类,例如一个看起来像这样:

   class B extends A {

bar(): B {
return this;
}

}

如果我这样做了

new B().foo().bar()

这将在运行时工作,但它不能使用 TypeScript 编译。这是因为 foo() 声明返回类型为 A,而不是类型 B

我怎样才能返回 this 的类型,而不是声明 foo() 总是返回类型 A

我试过了:

enter image description here

但我收到此错误:

enter image description here

最佳答案

您必须使用 polymorphic this type 返回 this 的类型.

abstract class A {
foo(): this {
return this;
}
}

class B extends A {
bar(): this {
return this;
}
}

这将允许

const b = new B();

b.foo().bar();

关于typescript - 如何从父类(super class)方法而不是父类(super class)类型返回子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47490499/

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