请问老师接口返回的数据是否应该有约束
来源:19-6 配置数据持久化功能并测试后端接口

Panda_io
2023-07-03
我的登录返回如下
{
"code": 200,
"msg": "success",
"data": {
"token": "12868674e54b4fc896ff58c04355c080"
}
}
我的login判断逻辑需要这样写,里面有很多unknow,我理解这里并没有做类型约束,是否此处应该定义一个接口返回的 type = {xxx},然后直接用 “.” 进行调用,我这样太复杂了,而且感觉是为了避免TS约束而写成unknow,个人看法,还请老师点拨一下,要是接口返回的层级多一些,一直写unnkow感觉很奇怪
export default function Login() {
const token = useSelector((state: RootState) => state.user.token)
const dispatch = useAppDispatch()
const handleLogin = (params:any) => {
dispatch(loginAction({username: 'panda', password: '222'})).then((action) => {
const data = (action.payload as {[index: string]: unknown}).data
const code = (data as {[index:string]: unknown}).code
const dataInfo = (data as {[index:string]: unknown}).data
const token = (dataInfo as {[index:string]: unknown}).token
if(code === 200 && typeof token === 'string' ){
dispatch(updateToken(token))
message.success('登录成功');
}
else{
message.error('登录失败');
}
})
}
return (
<div>
Login <br />
<Button onClick={handleLogin}>登录</Button>
{token}
</div>
)
}
写回答
1回答
-
西门老舅
2023-07-03
你好,
首先后端数据是否要进行类型约束,这个看团队情况而定,可以约束也可以不约束。后端数据经常要改变,所以约束会加大开发成本。
如果感觉unknow使用不方便,可以换成any类型。
其实TS最大的类型限定并不是后端数据,而是前端的核心方法的限制,以及组件通信的限定。
012023-07-03
相似问题