
interface Response<T = any> { data?: T } const res :RespOnse= {} const abc = res.dat.abc 上述代码,abc 的类型是 any,但是我其实本意是让 data.abc 报错来着
为什么会这样,如果正确的定义这个类型(当前的场景const res :Response<xxx> = {} 此处没法给 Response 传泛型)
1 kingwl 2021-05-11 14:20:40 +08:00 ` interface Resp<T = unknown> { data?: T } const res :Resp = {} const abc = res.data.abc ` |
2 momo2278 2021-05-11 14:22:34 +08:00 如果你定义的泛型给了默认值(<T = any>),你不传的情况下 res.data 对的 data 就是 any,既然定义了为什么声明 res 的时候不带上类型呢? |
3 myCupOfTea OP @fox2081 因为没那个时间,我司的业务不太一样,一个页面几十个接口,不可能一个一个的去定义的 |
4 myCupOfTea OP @fox2081 而且这个接口报废率有点高 |
5 momo2278 2021-05-17 09:40:26 +08:00 @myCupOfTea 如果你这个是接口返回值的泛型定义,建议让后端生成接口定义,地址、类型、传入参数、返回值,最好放在一个 json 中,然后前端通过这份配置生成接口代码和 d.ts 声明文件,这样就不用前端定义类型了,还形成了统一,后端返回的数据类型都有前端的对应,比如 int 、float 、int64 都对应 number,转换下就行 |