Skip to content

关于 http.get 在不指定 callback 时的类型提示问题 #4

Description

@kvii

在使用 http.get 等 api 发送请求时,如果不填 callback 参数的话是同步执行,函数会 return 一个 response 对象。如果填了这个参数就不会 return 内容。但现在 http.get 在不填 callback 参数时返回类型的提示是 void | Http.WrappedResponse 而非 Http.WrappedResponse
image
这样会导致 resp.body 被推断成为 any 类型,因此像 resp.body.string() 这样的代码就没有类型提示。
image

翻了下源码,发现 get 没有重载,多种传参方式共用一个函数定义。

get(url: string, options?: Http.RequestBuilderOptions, callback?: Http.Callback): Http.WrappedResponse | void;

如果能改成这种形式的话就更好了。

get(url: string): Http.WrappedResponse;
get(url: string, options: Http.RequestBuilderOptions): Http.WrappedResponse;
get(url: string, options: Http.RequestBuilderOptions, callback: Http.Callback): void;

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions