联合类型 - union types
// 我们只需要用中竖线来分割两个 let numberOrString: number | string // 当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法: numberOrString.length numberOrString.toString() 复制代码
类型断言 - type assertions
function getLength(input: string | number): number { const str = input as string // 当类型是string的时候(类型断言) if (str.length) { return str.length } else { const number = input as number // 当类型是number的时候(类型断言) return number.toString().length } } 复制代码
类型守卫 - type guard
function getLength2(input: string | number): number { if (typeof input === 'string') { // 类型守卫 return input.length // string类型 } else { return input.toString().length // number类型 } }