数据先于界面

在写第一个组件之前,我们先用 TypeScript 定义清楚"一篇文章长什么样":

export interface Post {
  slug: string
  title: string
  excerpt: string
  content: string
  category: string
  tags: string[]
  date: string
  readingTime: number
  // ...
}

类型带来的三重收益

1. 编译期防错。给 readingTime 传字符串会直接报红,不用等运行时翻车。

2. 自动补全。在模板里写 post. 时,IDE 会列出全部合法字段,再也不用翻数据文件。

3. 自文档化。一份 Post 接口本身就是最权威的数据字典,新成员读懂类型,就读懂了数据结构。

用字面量联合类型约束取值

type Theme = 'light' | 'dark'

这比 string 安全得多——任何拼写错误(如 'drak')都会被立刻捕获。

小结

"类型即文档"不是口号,而是一种用编译器替你检查文档是否过时的工作方式。一旦习惯,便再也回不去动态类型了。