有无办法令 request 根据传入参数决定返回类型
TIS-OMiddle opened this issue · 2 comments
TIS-OMiddle commented
背景:
- 返回结构普遍有一层封装:
{code: 0, data: {}, message: ''}
- 生成的时候指定了
dataKey: 'data'
- 实际请求中,根据传入的参数,决定要不要直接返回
{code: 0, data: {}, message: ''}
这种结构 - 需求是大部分情况下只用到
data
,但有时也需要拿到外面的{code:0, message:''}
,这种类型有想法💡吗😢
大概意思如下:
// 外层封装
interface Wrapper<T> {
code: number;
data: T;
message: string;
}
// origin 为 true时,返回Wrapper包装类型
function request<TResponseData>(
payload: RequestFunctionParams,
origin: true,
options?: RequestOptions
): Promise<Wrapper<TResponseData>>;
// origin 为 false时,返回生成的相应类型
function request<TResponseData>(
payload: RequestFunctionParams,
origin?: false,
options?: RequestOptions
): Promise<TResponseData>;
这样写request
本身没啥问题,但是经过工厂函数封装后,ts就一直推断origin类型为false|undefined了
fjc0k commented
目前做不到哈。建议把真正需要的数据都放进 data,code、message 只做统一校验。
TIS-OMiddle commented
目前实践中采用全局统一处理,有异常时通过Promise.reject抛出原始对象