这一行代码,是node express后端解构request params的
const {search,role,status,sort,pageNo,perPage} = req.query
在typescript 里面需要给前面的变量赋一个类型
const {search,role,status,sort,pageNo,perPage}:TypeParams = req.query
在这里TypeParams必须全部弄成可选的字段,如下
type TypeParams={
search?:string
role?:string
xxx
xxx
}
如果没有可选,也就是"?",typescript立刻报错。Property search is missing in type "ParsedQs" but required in TypeParams.
问题:
- 这个报错信息是什么意思?parsedQs是哪里来的?
- 我用中间件给这些字段都已经提前赋值年,到了解构这一步,我明确知道它们是不可能undefined.如何写代码才能避免添加“?”,我不想要处理undefined,因为我明确知道不会underfined,都是有默认值的。
- 这个结构赋值的过程中,如何写代码才能省略给变量添加这个TypeParams?能够让typescript自己推断?
我是一个初学typescript的小白,希望大佬能够稍微详细的说说,让我从这个案例中能够感悟到更多typescript的工作机制。
感谢
第一个问题TypeParams的意思是在ParsedQs类型里没有找到search属性,但在TypeParams里有。ParsedQs是Express框架里用来解析查询字符串的类型的
第二个问题用类型断言:
不想一个个加?;
第三个问题还是要写类型,还是用类型断言吧