typescript泛型函数里面约束的返回对象如果是动态添加参数,怎么能验证通过
发布于 6 年前 作者 wuyipeng 3602 次浏览 来自 问答

image.png image.png

6 回复

建议把Params接口设置为类,实例化为params对象,然后遍历body的kv对给params对象赋值即可。 另外,你这个反省函数返回值应该是个元组吧?

@royalrover 不是元组,是个对象,类似于 { name:‘hello’, age: 18 }

@wuyipeng 你的泛函数返回值不是<Params,Body>吗,这是对象?

最简单的 as any. 你这里本来就相当于是反射的代码,本来就是要无视类型信息的.

@royalrover 返回值是Params类型,<Params,Body>是参数类型啊喂

首先,要让 typescript 在 compile 阶段就能确定两项 required params 已存在,你应该改成:

const { m_shopid, page_size } = body;
const params: Params = { m_shopid, page_size }; // 这裡你也不应该使用 let 进行宣告,这项 object 的 reference 从没变过。

若不如以上定义初始 params,就得如 @JsonSong89 所说 as any

const params: any = {};
// ...
return params as Params;
回到顶部