【建议】toXXX()的返回类型,参照Params和Data一样,使用在toute.config.ts中定义的BackData类型
Closed this issue · 7 comments
建议可以把toXXX()的返回类型定义在toute.config.ts中,如:BackData;
在生成的toXXX()方法上,使用toXXX<T = BackData>(),这样既可以使用默认定义在toute.config.ts中的BackData,又可以在特定场景下自己传入特定类型,不过不建议使用toXXX<特性类型>()这种,一般一个页面就定义一个返回类型。
老板,你觉得怎么呢?
麻烦顺便也把Router.getParams()、Router.back()、Router.setBackResult()改成泛型方法吧,
这样在调用这几个方法的时候,也可以通过这样的方式来限定返回值的类型:
Router.getParam<Params>(...) Router.back<BackData>(...) Router.setBackResult<BackData>(...)
对了,还有一个建议,最好把route.config.ts中定义的Params, Data, BackData加上页面的名称,
如:CardParams, CardData, CardBackData。
不然引用的时候,到处都是Params,Data,BackData;特别是一个组件或页面同时引入几个页面的类型的时候,傻傻分不清楚。
建议可以把toXXX()的返回类型定义在toute.config.ts中,如:BackData; 在生成的toXXX()方法上,使用toXXX<T = BackData>(),这样既可以使用默认定义在toute.config.ts中的BackData,又可以在特定场景下自己传入特定类型,不过不建议使用toXXX<特性类型>()这种,一般一个页面就定义一个返回类型。
老板,你觉得怎么呢?
这个是可以的
麻烦顺便也把Router.getParams()、Router.back()、Router.setBackResult()改成泛型方法吧, 这样在调用这几个方法的时候,也可以通过这样的方式来限定返回值的类型:
Router.getParam<Params>(...) Router.back<BackData>(...) Router.setBackResult<BackData>(...)
getParams 可以设置泛型,另外两个也添加泛型定义感觉没什么意义
对了,还有一个建议,最好把route.config.ts中定义的Params, Data, BackData加上页面的名称, 如:CardParams, CardData, CardBackData。 不然引用的时候,到处都是Params,Data,BackData;特别是一个组件或页面同时引入几个页面的类型的时候,傻傻分不清楚。
在我实际的开发场景下,90%的时候参数的类型定义只在当前页面用到,如果有较少的在其他页面或组件用到的话,建议导入的时候设置别名:
import { Params as UserParams } from '../user/route.config.ts'
或者在 route.config.ts 中新增一个类型导出:
export type Params = {
id: string
}
// 新增一个
export type UserParams = Params
BackData 和 getParam 的泛型加了