对象类型 
- object:非原始类型
- Array<T>或- T[]:数组
- Tuple:元组,例如- [string, number]
- enum:枚举
- class:类
- interface:接口
- type:类型别名
interface 
对象属性 
ts
interface User {
  id: number
  name: string
  email?: string            // 可选
  readonly cb:()=>boolean  // 只读
}- ?:属性可缺省(也可能是- undefined)
- readonly:编译期禁止修改,常用于修饰函数或者- id
索引签名(动态键) 
当对象的键不固定时,可以用索引签名来约束键和值的类型。
ts
interface NumberDict {
  [key: string]: number   // 任意字符串键 → number
}
const scores: NumberDict = {
  math: 95,
  english: 88,
  history: 76,
}索引签名会约束所有属性:
ts
interface UserDict {
  [key: string]: string
  id: number  // ❌ 报错:不兼容 string
}解决方案:
ts
interface UserDict {
  [key: string]: any   // 统一到兼容类型
  id: number
  name:string
}interface重名【声明合并(Declaration Merging)】 
两个(或多个)同名 interface 会被编译器合并成一个:
ts
interface User {
  id: number
}
interface User {
  name: string
}
const u: User = {
  id: 1,
  name: 'Alice'
} // ✅ okts
interface User {
  id: number
  name: string
}Array 
Tuple 
定义:元组是一种特殊的数组类型,用于表示已知元素数量和类型的数组。
与普通数组不同,普通数组元素类型可以相同且数量不固定,而元组可以指定每个位置的类型。
ts
let tuple: [string, number];
tuple = ["Alice", 25]; // ✅
tuple = [25, "Alice"]; // ❌ 类型错误
tuple = ["Bob"];       // ❌ 数量不匹配可选元素:
ts
let tuple: [string, number?];
tuple = ["Alice"];      // ✅ 第二个元素可省略
tuple = ["Alice", 30];  // ✅