美文网首页
一、基础类型

一、基础类型

作者: zdxhxh | 来源:发表于2020-02-19 10:00 被阅读0次

    基础类型

    Typescript 支持与 Javascript几乎相同的数据类型,此外还提供枚举值使用,注意 :基本类型的注解都是小写字母开头。

    1. 布尔值

    let isDone : boolean = false 
    

    2. 数字

    与Javascript一样,Typescript的所有数字都是浮点数,这些浮点数都是number,除了支持十进制和十六进制变量,Typescript还支持ES5引入的二进制和八进制

    let decLiteral : number = 20  // 10进制
    let hexLiteral : number = 0x14  // 十六进制
    let binaryLiteral : number = 0b10100 // 二进制
    let octalLiteral : number = 0o24  // 八进制
    

    3. 字符串

    let name : string = 'bbb'
    

    4. 数组

    Typescript可以想Javascript一样操作数组。可以有两种方式添加数组的类型注解。

    let list : number[] = [1,2,3]
    let list : Array<number> = [1,2,3]
    

    5. 元组Tuple

    元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。比如,你可以定义一对值位stringnumber类型的元组。

    let x : [string,number]
    x = ['hello',10]  // OK
    x = [10,'hello']  // ERROR
    

    访问一个已知索引的元素,会得到正确的类型

    console.log(x[0].substr(1)) // ok
    console.log(x[1].substr(1)) // Error, 'number' 不存在 'substr' 方法
    

    当访问一个越界的元素时,会使用联合类型替代

    x[3] = 'world' // OK, 字符串可以赋值给(string | number)类型
    console.log(x[5].toString()) // OK, 'string' 和 'number' 都有 toString
    x[6] = true // Error, 布尔不是(string | number)类型
    

    6. enum

    enum 枚举类型是javascript标准数据类型的一个补充,使用它可以为一组数值赋予友好的名字。

    enum Color { Red,Green,Blue }
    let c : Color = Color.Green
    

    枚举类型与Symbol类型不同的是,它可以为元素编号,默认从0开始编号

    enum Color { Red=1,Green=2,Blue=4 } // 从1开始编号
    let c : Color = Color.Green
    let colorName: string = Color[2]  // Green
    

    7. any

    有时候,我们会在编程阶段为不明确类型的变量指定一个类型,这些值可能来自动态内容,比如来自用户输入或者第三方代码库,这种情况下,我们不希望类型检查器对这些指进行检查,而是让他直接通过编译阶段的检查。

    let notSure : any = 4 
    notSure = 'maybe a string instead'
    notSure = false 
    

    any允许你在编译时可选择地包含或溢出类型,例如你有一个数组,包含不同的类型

    let list: any[] = [1, true, 'free']
    list[1] = 100
    

    8. void

    void类型表示没有任何类型,当一个函数没有返回值的时候,你可以看见其返回值类型是void

    function warnUser : void (){
      console.log('>>')
    }
    

    void只应该在函数定义返回值的时候使用,直接声明一个void类型没有什么作用。

    let unsable : void = undefined
    

    9. null 与 undefined

    Typescript 中,undefinednull两者各有自己地类型叫做undefinednull,与void相似,他们本身的作用并不大。

    let u: undefined = undefined
    let n: null = null
    

    另外,默认情况下,undefinednull是所有类型的子类型,你可以将他们赋值为其他类型。

    当指定--strictNullChecks标记,undefinednull只能赋值给void,这能避免很多问题。

    9. never

    never 表示用不存在的类型,常用于抛出异常或者根本不会有返回值的函数表达式或箭头函数表达式的返回值类型。

    never 是任何类型的子类型,也可以赋值给任何类型,然而,没有类型是never的子类型,也就是说没有任何类型可以赋值为never,除了它自身。

    // 返回never的函数必须存在无法达到的终点
    function error(message : string) : never { 
      throw new Error('???')
    }
    

    10. object

    object 表示非原始类型,就是除了number boolean symbol string null undefined之外的类型。

    使用object类型,可以更好的表示object.create(null)这样的API

    declare function create(o : object | null ) : void 
    create({ prop: 0 }) // OK
    create(null) // OK
    
    create(42) // Error
    

    相关文章

      网友评论

          本文标题:一、基础类型

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