1.类型别名
类型别名是用来给一个类型起一个新名字。
示例:
type Name = string type NameResolver = () => string type NameOrResolver = Name | NameResolver function getName(n: NameOrResolver): Name { if (typeof n === 'string') { return n } else { return n() } }
上面代码中,type变量声明的类型别名,在后面可以直接使用。
2.字面量
只能是一个原始数据类型
const str: 'name' = 'name'
const number: 1 = 1
与类型别名结合的作用是一堆常量的可选值:
type Directions = 'Up' | 'Down' | 'Left' | 'Right'
let toWhere: Directions = 'Right'
且只能在类型中定义的一个值中选择:
3.交叉类型
与 | 符号相反,用的是 & 符号,
interface IName { name: string } type IPerson = IName & { age: number } let p: IPerson = { name: '张三', age: 14, }
上面代码中,使用了& 符号。将IName接口与{ age: number }结合起来了,这样就约束了IPerson类型的对象必须同时实现name和age属性