我有一个函数调用库中的方法,该函数根据提供给该方法的参数返回不同的数据。
一个简化的示例:
import aMethod from "aLib";
const aParam = "foo"; // or in other cases: "bar";
const response = aMethod(aParam);
如果aParam
是"foo"
,则从aMethod
返回的响应与我将aParam
传递为"bar"
时的响应具有不同的形状。例如,response
中的someParam === "foo"
的形状如下:
type TFooResponse = {
someObject: object;
someString: string;
}
如果我通过"bar"
,则response
的形状将是:
type TBarResponse = {
someArray: array;
}
如果aParam === "foo"
使用TFooResponse
,否则使用TBarResponse
,我应该如何最好地说明〜?
答案 0 :(得分:1)
我认为您正在寻找类似的东西:
type TType<T extends "foo" | "bar"> = {
a: T,
c: T extends "foo" ? TFooType : TBarType
}
或者例如:
function <T extends "foo" | "bar"> aMethod(aParam: T): T extends "foo" ? TFooType : TBarType {
/**
*
*/
}