【问题标题】:Refer to Function type retaining generics请参阅保留泛型的函数类型
【发布时间】:2021-11-10 11:56:33
【问题描述】:

在 Typescript 中,有没有办法用泛型引用函数类型,而不必实例化泛型? (在实际调用函数时将它们传递给实例化)。

例如,我有以下类型:

type FetchPageData<T> = (client : APIClient<T>) => T;

其中 APIClient 是这样的抽象类:

export abstract class APIClient<T> {

  abstract getData(demoDataIsSelected : boolean, queryParameters ?: ApiQueryParameters) : T;
}

我想创建一个这种类型的函数,但如果我尝试:

fetchPageData : FetchPageData = client => {
   return client.getData(x, y);
}

Typescript 要求我为 T 提供泛型类型。我想要的类似于我们在引用函数定义时所做的,而不是调用它。同样,我希望 this 引用类型定义而不需要 T,因为 T 只涉及函数的调用。

如果不是这样,我在实例化时获取 T 并将其传递给 FetchPageData 的语法是什么? (它必须使用 const 语法,而不是函数,因为我实际上是在 react 上使用 useCallback 进行分配)

【问题讨论】:

    标签: typescript


    【解决方案1】:

    我在发这个之后就明白了:

    通过将&lt;T&gt; 放在等号之前,我使用 T 作为创建函数的泛型,而不是将 FetchPageData 定义为采用泛型参数的函数类型。正确的语法是:

    type FetchPageData = <T>(client : APIClient<T>) => T;
    

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      相关资源
      最近更新 更多