如何根据参数类型转换函数的返回类型?

sunknudsen

如何response.body转换为options.responseType参数类型TypeScript游乐场

下面的代码块是我代码的简化版本...还有更多选择。

import got from "got"

interface Options {
  responseType?: "buffer" | "json"
}

const get = async (url: string, options?: Options) => {
  let response = await got.get(url, {
    responseType: options?.responseType ?? "json"
  })
  return response.body
}
提香·切尔尼科娃·德拉戈米尔

最简单的解决方案是使用重载:

import got from "got"

interface Options {
  responseType?: "buffer" | "json"
}


async function get (url: string, options: Options & { responseType: "buffer" }) : Promise<Buffer>
async function get(url: string, options: Options & { responseType: "json" }): Promise<object>
async function get(url: string, options?: Options): Promise<unknown>
async function get (url: string, options?: Options) {
  let response = await got.get(url, {
    responseType: options?.responseType
  })
  return response.body
}

let buffer = get("", { responseType: "buffer"})
let object = get("", { responseType: "json" })
let unknown = get("")

游乐场链接

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何转换函数类型?

如何使函数接受字符串参数,并根据该函数返回不同的结构类型?

如何根据函数的type参数的type参数编写具有多态返回类型的函数?

根据参数返回类型

如何获取Scala函数的参数/返回类型?

如何推断可以根据条件返回类型的函数的类型?

根据函数的参数化类型对函数强制执行参数和返回类型限制

flowtype:如何按参数计数/类型重载函数返回类型?

如何定义依赖于参数包转换的函数的返回类型?

根据参数中的属性强制执行函数的返回类型

TypeScript根据类型参数返回不同的类型

根据可变参数类型推断返回类型

根据类型防护推断函数的返回类型

如何根据类方法的返回类型声明参数类型?

TypeScript:如何根据函数参数类型设置函数返回值类型

根据TypeScript中的参数在字典中定义函数的返回类型

Typescript:如何根据参数类型获取函数的返回类型?

根据参数区分返回类型

是否可以根据函数参数类型的定义映射来定义函数返回类型?

类型转换函数的参数

从函数返回类型推断模板参数类型

C ++模板函数根据模板参数返回类型

如何根据“类似函数”的参数推断函数模板的返回类型?

如何根据函数返回的对象指定类型

如何根据参数获得泛型和常量函数返回类型

如何根据传递的参数从函数返回不同的数据类型

TypeScript - 基于参数类型的函数返回类型

根据参数定义函数的返回类型

Typescript 根据参数强制函数返回类型为接口的键