# TS 思想总结
## 类型检查很有用
1. 检查错误
2. 一次写过(减少Debug)
3. 辅助系统设计(类型的思考方式)
## 类型是可以推导的
类型系统的构造
- 每个变量/值的类型
- 操作符的类型
- 表达式类型
- 函数的类型
- 类的类型
让所有程序都有类型!
- 更好的代码提示
- 更好的书写检查
- 更好的错误提示
## 类型是可以计算的
```tsx
type Unwrap = T extends Promise ? U : T
type p = Unwrap
```
类型可以被计算, 这为TS提供了强大的抽象能力。
```tsx
type RouteParams =
Route extends `${string}:${infer Rest}`
? RouteDic
: never
type RouteDic = {
[p in Arg] : string
}
const path = "/a/:page"
const params : RouteParams = {
'page' : 'abc'
}
```
## 类型帮助我们思考
思考【什么东西是什么】?
举例:FC和ComponentClass是____?
思考:设计一个类型存储css的长度下面方案可行吗?
```tsx
type CSSSize {
value : number,
unit : string
}
```