gpt4 book ai didi

typescript - Typescript 中的通用方法

转载 作者:行者123 更新时间:2023-12-02 09:17:54 25 4
gpt4 key购买 nike

我有一个抽象类,它有一个抽象的泛型方法,它看起来像这样

protected abstract getData<T>(): T[];

然后我有一个扩展这个抽象类的类。自 getData是抽象的,我必须在子类中实现它。

它看起来像这样
protected getDataList<T>(): T[] {
return this.databaseService().getSomethingList();
}
getSomethingList()返回 Something[]
虽然我收到以下错误

Type 'Something[]' is not assignable to type 'T[]'.



我尝试了一些方法来解决此错误,但似乎必须使子实现也变得通用才能使 Typescript 满意。上面的实现很好,直到我从 2.2.1 升级 Typescript至 2.4.1 .

所以我想知道如何让我的代码再次符合 Typescript 2.4.1?

最佳答案

我相信您正在尝试设置它,以便整个抽象基础由派生实例必须具体化的特定类型进行参数化。以下是您将如何做到这一点:

abstract class Foo<T> {
protected abstract getData(): T[];
}

class Something { }
class SomethingFoo extends Foo<Something> {
protected getData(): Something[] {
// implement here
}
}

请注意,函数本身没有参数化,因为函数的调用者不是决定该函数将返回什么类型的人。相反,包含类型被参数化,并且它的任何派生指定相应的类型参数。

关于typescript - Typescript 中的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193446/

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