Ts type 与 interface
2024-04-29 本文已影响0人
逗婆苍穹
- type 类型别名
- 可以描述对象的结构,包括属性、方法和索引签名等。类型别名不能被实现。
- 多次声明同名会报错
type A = string
type A = number
// 标识符“A”重复。类似于 let const 重复声明会报错
- 可以描述对象类型、基本类型、联合类型、交叉类型、元组等
- 不支持直接的继承,但可以使用交叉类型(&)来合并多个类型
// type 继承 type 与 interface
type P1 = { name: string }
type P2 = { grade: number }
interface P3 { age: number }
type P = P1 & P2 & P3
- Interface 接口
- 可以描述对象的结构,包括属性、方法和索引签名等。接口可以被实现(implements)
- 可以多次声明同一个接口,并且会自动合并接口中相同名称的成员
interface A { name:string }
interface A { age:number }
// 会求并集 { name:string, age:number }
- 主要用于描述对象类型,虽然可以描述函数类型,但不能直接描述基本类型、联合类型等
- 可以通过继承其他接口来扩展自身,使用extends关键字
// interface 继承 interface
interface P1 { name: string }
interface P extends P1 {
grade: number
}
// interface 继承 type
type P1 = { name: string }
interface P extends P1 {
grade: number
}