Skip to content

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

Open
@kvii

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;

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