当前位置: 首页 > Web前端 > HTML

前端开发中,规划参数类型的新思路

时间:2023-03-28 14:48:48 HTML

在实际开发中,我们可能会有如下场景:有一个Student接口,用来对应接口的返回类型。在一个StudentService中,这个方法中有一个update方法,用于更新Student。场景回顾Student:interfaceStudent{id:number;//学号no:number;//名称名称:字符串;//手机号码phone:string;//gendersex:boolean;}现在的逻辑是这样的,在更新学生信息时,我们只允许用户更新姓名和电话字段。这个时候我们要反映在StudentService.update方法中只允许更新这两个字段。我们有两种写法:第一种是直接声明参数类型为Student:classStudentService{voidupdate(id:number,student:Student){}}第二种是直接在参数中声明字段类型:classStudentService{voidupdate(id:number,student:{name:string,phone:string}){}}缺点分析第一种方法的缺点是我们不能直接在这个方法中通过update方法的声明,但是它的好处是可以快速展示Student实体的变化,比如我们后期把phone字段改成mobile。第二种方法的优点是可以直接在update方法中获取要更新的字段,缺点是不能快速响应Student实体以后的字段变化。建议的解决方案其实我想要一个类似下面的参数声明:classStudentService{voidupdate(id:number,student:{name:string,phone:string}asStudent){}}但不幸的是typescript不支持如果我们支持这种写法,我们可以选择次优的,我们可以这样写:}}简单的在函数的第一行添加一个类型推导,这样当Student类型发生变化时,我们可以通过语法检查自动发现这行代码中的语法错误,然后改正。由于我们直接在参数中声明了各个字段,而不是使用Student进行大量声明,我们可以直接获取update方法的具体更新函数。