数码生活指南
霓虹主题四 · 更硬核的阅读氛围

TypeScript中类型和接口的区别,老人护理系统开发的小细节

发布时间:2025-12-12 17:14:48 阅读:348 次

在给社区养老平台写健康监测模块时,碰上一个常见问题:该用 type 还是 interface?看起来都能定义对象结构,但实际用起来还是有差别的。

从一个血压记录功能说起

比如我们要存老人每天的血压数据,收缩压、舒张压、测量时间。用 interface 可以这样写:

interface BloodPressure {
  systolic: number; // 收缩压
  diastolic: number; // 舒张压
  timestamp: Date;
}

而用 type 的写法差不多:

type BloodPressure = {
  systolic: number;
  diastolic: number;
  timestamp: Date;
};

表面上看,两种方式都能达到目的。但区别藏在后续扩展里。

想加个心率字段怎么办?

如果哪天设备升级,要同时记录心率,interface 允许我们重新声明同名接口,自动合并:

interface BloodPressure {
  heartRate?: number; // 可选的心率值
}

这时候原来的接口就自然多了个字段。但 type 不行,一旦定义就不能再扩展,重复定义会报错。

复杂点的情况:多种数据源混合

有的老人用手环,有的用独立血压计,数据格式不一样。这时候 type 更灵活,能直接做联合型:

type DeviceData = {
  source: 'bracelet';
  hr: number;
} | {
  source: 'monitor';
  sys: number;
  dia: number;
};

这种用 interface 就不好实现,得绕路去配合 type 使用。

实际开发中的小习惯

我现在一般默认用 interface,毕竟大多数情况都是定义对象结构,以后也好扩展。只有遇到联合、映射、条件类型这些复杂逻辑时,才换成 type。团队里其他人也这么干,代码看起来统一些。

就像给老人安排饮食,日常三餐按固定菜单来(interface),特殊情况临时加营养餐就得另开单子(type),各有各的用处。