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