数据先于界面
在写第一个组件之前,我们先用 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')都会被立刻捕获。
小结
"类型即文档"不是口号,而是一种用编译器替你检查文档是否过时的工作方式。一旦习惯,便再也回不去动态类型了。