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

时间:2020-03-17 12:12:01

标签: typescript

如何将response.body强制转换为options.responseType参数的类型? TypeScript playground

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

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
}

2 个答案:

答案 0 :(得分:2)

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

rabbitmqctl add_user test test

optionSelected

答案 1 :(得分:0)

使用泛型T

import got from "got";

type ResponseType = "buffer" | "json";

const get = async <T>(url: string, responseType: ResponseType): Promise<T> => {
  let response = await got.get(url, {
    responseType: responseType
  });
  return response.body;
};

get<string>("url", "json");