ts-08 联合类型、交叉类型、类型断言

117 阅读1分钟

联合类型

  • 联合类型意思就是可以定义多种类型
  • 变量
    • 使用场景 比如手机号 和座机
    •   let num: number = 12312312
        let num2: number | string = '010-111322'
      
  • 函数
    • 使用场景 比如后台返回的是 0 1 或 true false
    •   let fn = function (t: number | boolean): boolean {
          return !!t
        }
        let res1 = fn(0) // false
        let res2 = fn(1) // true
        let res3 = fn(true) // true
        let res4 = fn(false) // false
      

交叉类型

  • 交叉类型 类似 extends 把两个接口合并了
  •   interface Person {
        name: string
        age: number
      }
      interface Hobby {
        like: string
      }
    
      const res = (from: Person & Hobby) => {
        return from
      }
      let r1 = res({
        name: '亚索',
        age: 12,
        like: '黑丝',
      }) // { name: '亚索', age: 12, like: '黑丝' }
    

类型断言

  • 语法:值 as 类型&<类型>
    •   const fn = function (num: number | string): void {
          console.log((num as string).length)
        }
        fn('123') // 3
        fn(123) // undefined  数字么有length
      
  • 例子
    •   interface P1 {
          name: string
        }
        interface P2 {
          like: string
        }
        const fn = (params: P1 | P2): void => {
          console.log((params as P1).name)
        }
        fn({
          name: '亚索',
        }) // 亚索
      
        fn({
          like: '黑丝',
        }) // undefined  因为打印的是P1.name
      
  • 使用 any临时断言
    •  (window as any).name = '艾克'