故结论:前端兼容。
由于种种原因,可能某个字段,在不同的后端接口里,命名各不相同,甚至值的类型也不同。
导致在写TypeScript时,要反复定义结构相似的type/interface
,还很难起名。
现在我有两个接口:
// 通过ID查用户
const res = fetch.get('/user', { id: 1 })
console.log(res.body) // { id: 1, name: 'alice' }
// 通过ID改用户名
const res = fetch.post('/user', { user_id: '1', new_username: '' })
console.log(res.body) // { code: 0 }
很难受吧,后端query
和update
的接口字段居然不一致。
作为前端,我的用户ID究竟叫id
还是user_id
?
类型究竟是number
还是string
?
很简单,按前端方便来:
type User = {
userId: string,
username: string
}
<div>
<div>用户ID:{{userId}}</div>
<div>用户名:<input type="text" value="{{username}}" /></div>
</div>
因为JavaScript常用驼峰命名,userId
通常只是展示,不会涉及什么数值运算,绑定<input />
之类也比较方便…
哈哈,你肯定早知道这些,我知道你在疑惑,接口怎么办?
我们知道,TypeScript类型系统很好,除非any
泛滥。
要想抑制any
渗入我们的代码,就要知道any
从哪产生。