你有没有遇到过这样的情况?写了一堆JavaScript函数,传个对象进去,结果别人调用时不知道该传哪些字段,干脆随便填几个,最后出问题了还得来回沟通。其实在团队开发或者自己维护老项目时,这种混乱特别常见。
接口不是新词,但TypeScript让它更实用
TypeScript里的“接口”(Interface)听起来挺正式,其实它就像一份合同,规定了一个对象应该长什么样。比如你要做一个用户信息展示功能,就可以提前说清楚:这个用户必须有名字、年龄,邮箱可选。
interface User {
name: string;
age: number;
email?: string;
}
这样一来,谁用这个User类型,IDE就会自动提醒他缺了啥、拼错了啥。写代码的时候也不用翻文档,鼠标放上去就知道结构。
实际用起来才觉得真香
举个例子,你在写一个购物车功能,要处理商品数据。不用接口的话,可能每次都要猜item里有没有price、count这些字段。加上接口后,直接定义好:
interface Product {
id: number;
name: string;
price: number;
count: number;
}
function addToCart(item: Product) {
console.log(`已添加 ${item.name} 到购物车`);
}
如果有人传了个缺少price的对象进来,TypeScript立马报错,省得等到运行时才发现数字相加变成NaN。
还能合并和继承,灵活得很
有时候后端返回的数据结构变了,比如新增了折扣字段。你可以扩展原来的接口,而不是改来改去。
interface DiscountedProduct extends Product {
discount: number;
}
这样老逻辑照常跑,新功能也能用扩展后的结构。就像衣服加个口袋,不影响原来穿着。
很多人一开始觉得写接口多此一举,但项目一大,协作一多,这份“约定”就成了沟通的桥梁。你不光是在写代码,也是在告诉别人:“我这儿需要啥,别乱传。”