zoukankan      html  css  js  c++  java
  • TypeScript学习笔记之基础类型

    从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧:

    typescript最新版本2.6,所有演示代码均基于此版本
    

    开始之前确定安装了如下npm包:

    npm i typescript -g    // ts全局包
    npm i ts-node -g        // 使用ts-node可以直接运行ts文件
    

    基础类型

    布尔类型

    let isDone: boolean = false
    let isExist: boolean = true
    console.log(isDone, isExist)
    

    运行:

    控制台执行命令:ts-node dataType.ts
    
    ->false true
    

    数值类型(number)

    ts的number类型继承了es6的number,额外支持二进制和八进制数值。

    let decLiteral: number = 6;   // 十进制
    let hexLiteral: number = 0xf00d;    // 16进制
    let binaryLiteral: number = 0b1010;   // 二进制
    let octalLiteral: number = 0o744;   // 八进制
    console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral)
    

    运行:

    6 61453 10 484
    

    字符串类型

    let str: string = '我是晁州,我很可爱。。。'
    console.log(str);
    

    运行:

    我是晁州,我很可爱。。。
    

    模板字符串:

    let str: string = '我是晁州,我很可爱。。。'
    console.log(str);
    let tempString: string = `i am a template str:${str}`
    console.log(tempString);
    

    运行:

    我是晁州,我很可爱。。。
    i am a template str:我是晁州,我很可爱。。。
    

    数组类型

    let arr1: Array<number> = [1,2,3,4]   // 使用尖括号形式声明(数组泛型)
    console.log(arr1);
    let arr2: number[] = [2,3,4,5]      // 使用方括号声明
    console.log(arr2);
    

    运行:

    [ 1, 2, 3, 4 ]
    [ 2, 3, 4, 5 ]
    

    元组类型(Tuple)

    元组类型和数组相似,不同的是,元组每一项的数据类型可以不同(数组使用any类型也可以实现每一项类型不同)

    每一项的元素类型必须一致,否则编译出错
    
    let tuple1: [string, number, boolean]
    tuple1 = ['admin', 34, false]
    console.log(tuple1);
    

    运行:

    [ 'admin', 34, false ]
    

    枚举类型

    ts支持枚举类型,使用如下:

    enum Color {red, green, blue}   // 默认从0开始编号,即red=0,可以直接指定red=1开始
    let c: Color = Color.red
    console.log(c === 0, c === Color.red);
    
    let colorName: string = Color[1]
    console.log('Color[1]的name是:', colorName);
    

    运行:

    true true
    Color[1]的name是: green
    

    any类型

    any类型表示任意类型,类似于golang中的interface{}类型,any类型可以赋值任意类型。

    let any1: any = 4
    console.log(any1);
    any1 = false
    console.log(any1);
    any1 = undefined
    console.log(any1);
    let anyArr: any[] = [1, true, 'hello']
    console.log(anyArr);
    let anyArr2: Array<any> = [false, 0x1234, 'world']    // 泛型声明
    console.log(anyArr2);
    

    运行:

    4
    false
    undefined
    [ 1, true, 'hello' ]
    [ false, 4660, 'world' ]
    

    void类型(空类型)

    void类型表示没有任何类型,func无返回值时可以使用此类型。

    function voidFunc(): void {
      console.log('void function invoked!');
    }
    
    voidFunc()
    
    let voidVar: void = undefined   // void类型只能赋值undefined或null
    console.log(voidVar);
    voidVar = null
    console.log(voidVar);
    

    运行:

    void function invoked!
    undefined
    null
    

    undefined和null类型

    这两种类型是所有类型的子类型,没毛线用。

    let a: undefined = undefined
    let b: null = null
    console.log(a, b);
    
    let num1: number = 2
    console.log(num1);
    num1 = a      // undefined或null类型可以被任意类型给赋值,和any恰好相反
    console.log(num1);
    let c: any
    c = 23
    console.log(c);
    

    运行:

    undefined null
    2
    undefined
    23
    

    never类型

    never类型是那些总是会抛出异常,或者根本就不会有返回值的函数返回值类型。

    let a: never
    let b: string = 'admin'
    b = a
    console.log(a, b);
    
    function error(msg: string): never {
      throw new Error(msg)
    }
    
    function neverFunc(): never{
      while(true){
    
      }
    }
    

    运行:

    undefined undefined
    

    类型断言

    断言好比其它语言里的类型转换,但是不进行特殊的数据检查和结构。

    let someValue: any = 'i am a unknown value'
    console.log(someValue.length);
    let len: number = (someValue as string).length
    console.log(len);
    

    运行:

    20
    20
    

    今晚就学习到这里了,ps:很多时候自己亲手敲一遍强于看文档十遍!下节继续吧!

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻。

  • 相关阅读:
    虚拟内存分页机制的页面置换
    wait函数的作用
    Kubernetes中Pod生命周期
    ufw 禁用端口未生效
    Kubernetes各个组件的概念
    Kubernetes存储卷的使用
    虚拟内存分页机制的地址映射
    GUNgettext 无效
    响应HTTP服务的shell脚本
    yaml语法
  • 原文地址:https://www.cnblogs.com/vipzhou/p/8012988.html
Copyright © 2011-2022 走看看