typescript泛型函数里面约束的返回对象如果是动态添加参数,怎么能验证通过
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;