美文网首页
08-TypeScirpt-unknown类型

08-TypeScirpt-unknown类型

作者: 低头看云 | 来源:发表于2020-10-04 08:00 被阅读0次

    unknown 类型

    • 1.任何类型都可以赋值给unknown 类型
      let value: unknown
    
      value = 1
    
      value = '32'
    
    • 2.如果没有类型断言或者基于控制流的类型细化, 那么不能将 unknown 类型赋值给其他类型
      let value1: unknown = 123
      let value2: number
    
      // value2 = value1 as number
    
      if (typeof value1 === 'number') {
        value2 = value1
      }
    
    • 3.如果没有类型断言或者基于控制流的类型细化, 那么不能在 unknown类型进行任何操作
      let value3: unknown = 123
      // value3++ // Object is of type 'unknown'.
      let res = (value3 as number) + 1
    
    • 4.只能对 unknown 类型 进行 相等或不等操作, 不能进行其他操作
      let value4: unknown = 123
    
      let value44: unknown = 123
    
      console.log(value4 === value44)
    
    • 5.unknown 与其他任何类型组成的交叉类型最后都是其他类型
      type MyType = number & unknown
      type MyType1 = unknown & string
    
    • 6.unknown 除了any以外 , 与其他任何类型组成的联合类型最后都是 unknown 类型
      type MyType2 = unknown | number
      type MyType3 = unknown | number | boolean
    
    • 7.never 类型是unknow类型的子类型
    type MyType4 = never extends unknown ? true : false
    
    
    • 8.keyof unknown 等于 never
     type MyType5 = keyof unknown
    
    • 9.unknown 类型的值不能访问其属性, 方法, 创建实例
      class Person {
        name: string = 'css'
        say(): void {
          console.log(`name = ${this.name}`)
        }
      }
    
      let p: unknown = new Person()
      // p.say()
      console.log('p', p)
    
    • 10.使用映射类型时, 如果遍历的是 unknown 类型, 那么 不会映射任何属性
      type MyType6<T> = {
        [p in keyof T]: any
      }
      // 不会映射任何属性
      type MyType7 = MyType6<unknown>
    

    相关文章

      网友评论

          本文标题:08-TypeScirpt-unknown类型

          本文链接:https://www.haomeiwen.com/subject/tuguuktx.html