美文网首页
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