美文网首页
any 和 unknown

any 和 unknown

作者: sweetBoy_9126 | 来源:发表于2022-07-23 22:35 被阅读0次

    Top Type 通用父类型(任何类型都可以赋值给这个类型)

    any

    let value: any
    
    value = true
    value = 42
    value = 'hello word'
    value = []
    value = {}
    ....
    

    unknown

    let value: unknown
    
    value = true
    value = 42
    value = 'hello word'
    value = []
    value = {}
    ....
    

    区别

    any
    我不在乎它的类型
    你可以把任何值赋值给any类型的变量,并对该变量进行任何操作

    unknown
    我不知道它的类型,相当于安全的 any 类型,相比 any,ts 会对 unknown 类型进行检查
    你可以把任何值赋给 unknwon 类型的变量,但你必须进行类型检查或类型断言才能对变量进行操作

    function a(callback: unknown) {
      try {
        // 报错对象的类型为 unknown
        callback()
      } catch(err) {}
    }
    a(1)
    
    // 解决方法对 callback 进行类型收紧
    if (typeof callback === 'function') {
      callback()
    }
    

    unknown 类型赋值的变量只能赋值给 any 类型和 unknown 类型本身

    let value: unknown
    
    let value1: unknown = value // 正确
    let value2: any = value // 正确
    
    let value3: boolean = value // 错误
    let value4: number = value // 错误
    ...
    

    相关文章

      网友评论

          本文标题:any 和 unknown

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