zoukankan      html  css  js  c++  java
  • 6、类型

    6.1、Type Inference 类型推论

    可以推断出我们赋值的过程中这个变量应该是个什么类型

    let str = 'str'

    str = 123 // => 会报错 type inference 会在我们没有明确类型的时候推测出一个类型

     

    6.2、Union Types 联合类型

    顾名思义 可以给一个变量 赋予两种数据类型

    let numberOrString: number | string

    numberOrString = 'Gavin'

    numberOrString = 22

    // 同时 该变量可访问两种类型共有属性和方法

    numberOrString.toString()

    numberOrString.valueOf()

     

    6.3、As 类型断言

    当使用联合类型时 访问其中一种类型的属性和方法时 会报错 所以这种情况就会使用到 类型断言

    // as 类型断言 可以把联合类型中的不确定类型 转换成确定类型并使用该类型的属性和方法

    function getLength (input: String | number): number {

    // 把 str 指定为 String类型

    const str = input as string

    if (str.length) {

    return str.length

    } else {

    const number = input as number

    return number.toString().length

    }

    }

    注意类型断言不是类型的转换 把它断言成一个联合类型中不存在的类型时会出现问题

    这样的问题可以使用TypeScript中的一个特性type guard 当遇到联合类型的时候使用条件语句可以自动帮助我们缩小条件类型的范围

    function getLength (input: String | number): number {

    // 如果类型为String的话直接取input的length

    if (typeof input == 'String') {

    return input.length

    // 否则就把类型转换为String再取input的length

    } else {

    return input.toString().length

    }

    }

  • 相关阅读:
    Swift
    Swift
    书籍
    Swift
    Swift
    iOS系统架构
    Reveal真机(越狱)查看任意APP
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/shixiaokeng/p/14395648.html
Copyright © 2011-2022 走看看