如何在打字稿中使用函数参数类型?

豆蔻

我将Angular的HttpClient服务包装在我自己的方法中,但仍希望用户能够传递options,但是我似乎找不到在我自己的方法参数定义中引用该类型的好方法。

例:

  constructor(private http: HttpClient) {}

  my_request<T = any>(endpoint: string, payload: T, options: WhatTypeHere = {}) {
    return this.http.post<MyHttpResponse>(this.build_url(endpoint), this.build_payload(payload), {
      ...options,
      withCredentials: true,
    });
  }

您可以看到我不知道该放在哪里options参数,my_request()以便在使用my_request时可以强制执行。

这是HttpClient.post()fyi的定义

post(url: string, body: any | null, options?: {
        headers?: HttpHeaders | {
            [header: string]: string | string[];
        };
        observe?: 'body';
        params?: HttpParams | {
            [param: string]: string | string[];
        };
        reportProgress?: boolean;
        responseType?: 'json';
        withCredentials?: boolean;
    }): Observable<Object>;

我知道我可以将整个定义复制粘贴到我的方法中,但是如果有某种方式可以引用它,我希望简洁明了,并且将来定义会更改。

我尝试过的不起作用的一件事是 options: HttpClient['post']['options']

有什么我可以用来引用该类型的东西吗?

斯宾塞公园

在至少打字稿3.3(撰写本文时在操场上使用的版本)中,您可以提取的第3个参数的类型post请参见下面的精简示例:

interface A {
    eh: number
}
function post(url: string, body: any | null, options?: {a: A}): void {}

// Create an alias for convenience 
type PostOptions = Parameters<typeof post>[2];

let options: PostOptions;
options = {}; // Expected error: Property 'a' is missing in type '{}' but required in type '{ a: A; }'.
options = { a: {} }; // Expected error: Property 'eh' is missing in type '{}' but required in type 'A'.
options = {a: {eh: 10}} // Ahh... just right :)

游乐场链接

更多说明:Parameters<T>函数的参数类型T为元组。typeof post得到函数的类型,然后我们想要第三个参数,它是索引处元组中的类型2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何在打字稿中使用默认和可选参数调用函数

来自分类Dev

如何在打字稿中使用多种类型的数组调用map函数

来自分类Dev

如何在打字稿中有条件地设置函数参数类型?

来自分类Dev

如何在打字稿中使用通用类型和联合类型

来自分类Dev

如何在打字稿中提取函数的类型?

来自分类Dev

如何在打字稿中使用带有矩阵参数的 svg.js 变换?

来自分类Dev

如何在打字稿中使用不同类型的通用键键入对象

来自分类Dev

如何在打字稿中使用JavaScript

来自分类Dev

AngularJS如何在打字稿中使用$ q

来自分类Dev

如何在打字稿中使用Nullish合并

来自分类Dev

如何在打字稿中使用依赖注入?

来自分类Dev

如何在打字稿中使用`super()`

来自分类Dev

AngularJS如何在打字稿中使用$ q

来自分类Dev

如何在打字稿中使用JavaScript

来自分类Dev

如何在打字稿中使用反应颜色

来自分类Dev

在打字稿中使用扩展类型进行类型推断

来自分类Dev

如何在打字稿的函数参数中添加默认值?

来自分类Dev

如何在打字稿中的箭头函数中传递参数

来自分类Dev

如何在打字稿中制作一种类型的函数链(数组)?

来自分类Dev

在打字稿中使用params类型的角ui状态

来自分类Dev

在打字稿界面键迭代中使用条件类型

来自分类Dev

如何在打字稿上无序传递参数?

来自分类Dev

如何在打字稿中定义对象类型的对象

来自分类Dev

如何在打字稿中声明地图类型?

来自分类Dev

如何在打字稿中公开API返回的类型

来自分类Dev

如何在打字稿中检查数组的类型

来自分类Dev

如何在打字稿中键入以下对象/类型

来自分类Dev

如何在打字稿中指定以下类型?

来自分类Dev

如何在打字稿中将交点类型设为可选

Related 相关文章

  1. 1

    我如何在打字稿中使用默认和可选参数调用函数

  2. 2

    如何在打字稿中使用多种类型的数组调用map函数

  3. 3

    如何在打字稿中有条件地设置函数参数类型?

  4. 4

    如何在打字稿中使用通用类型和联合类型

  5. 5

    如何在打字稿中提取函数的类型?

  6. 6

    如何在打字稿中使用带有矩阵参数的 svg.js 变换?

  7. 7

    如何在打字稿中使用不同类型的通用键键入对象

  8. 8

    如何在打字稿中使用JavaScript

  9. 9

    AngularJS如何在打字稿中使用$ q

  10. 10

    如何在打字稿中使用Nullish合并

  11. 11

    如何在打字稿中使用依赖注入?

  12. 12

    如何在打字稿中使用`super()`

  13. 13

    AngularJS如何在打字稿中使用$ q

  14. 14

    如何在打字稿中使用JavaScript

  15. 15

    如何在打字稿中使用反应颜色

  16. 16

    在打字稿中使用扩展类型进行类型推断

  17. 17

    如何在打字稿的函数参数中添加默认值?

  18. 18

    如何在打字稿中的箭头函数中传递参数

  19. 19

    如何在打字稿中制作一种类型的函数链(数组)?

  20. 20

    在打字稿中使用params类型的角ui状态

  21. 21

    在打字稿界面键迭代中使用条件类型

  22. 22

    如何在打字稿上无序传递参数?

  23. 23

    如何在打字稿中定义对象类型的对象

  24. 24

    如何在打字稿中声明地图类型?

  25. 25

    如何在打字稿中公开API返回的类型

  26. 26

    如何在打字稿中检查数组的类型

  27. 27

    如何在打字稿中键入以下对象/类型

  28. 28

    如何在打字稿中指定以下类型?

  29. 29

    如何在打字稿中将交点类型设为可选

热门标签

归档