CNode

typescript泛型函数里面约束的返回对象如果是动态添加参数,怎么能验证通过

问答
Wwuyipeng发布于8 年前最后回复8 年前6 回复4707 浏览0 收藏

image.png image.png

查看回复

回复 (6)

R
royalrover#1·8 年前

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

R
royalrover#3·8 年前
引用 wuyipeng@royalrover 不是元组,是个对象,类似于 { name:'hello', age: 18 }

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

J
JsonSong89#4·8 年前

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

J
jacksparrow68#5·8 年前
引用 royalrover@wuyipeng 你的泛函数返回值不是<Params,Body 吗,这是对象?

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

G
grass0916#6·8 年前

首先,要让 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;
参与回复
登录后即可参与回复。登录