zoukankan      html  css  js  c++  java
  • TypeScript学习: 二、TypeScript 中的数据类型

    TypeScript 数据类型

      typeScript为了使用规范便于维护增加了类型校验

      布尔类型 --- boolean

      数字类型 --- number

      字符串类型 -- string

      数组类型 --- array

      元组类型 --- tuple

      枚举类型 --- enum

      任意类型 --- any

      null  和 undefined

      void类型

      never类型

     在ES5中, 数据类型为弱类型, 可以任意指向

    // 以前
    var str = "a";
    str = 12;
    str = false;
    str = [];
    // .... 等

      在typeScript 中数据类型必须定义

    一、布尔类型 boolean   (true false)

      

    定义为boolean类型的变量只能赋值 true 或 false

    flag = false; 
    flag = true;

    二、数字类型 number

      

    当定义了number类型, 不能复制给其他类型的值;

    var a:number = 123;
    a = 3.14; // 赋值小数点正确

     在typeScript中没有对整型和浮点类型进行区分, 所以浮点类型属于number类型(数字类型)

    三、字符串类型 String

      

    当定义了String 类型, 就不能再赋值给其他类型的值了

    字符串支持 "",'',``这三种写法

    let userName: string = "张三";
    let age: number = 5;
    let words: string = ` ${ userName } 今年 ${ age } 周年`;
    console.log(words);

    四、数组类型 array

    这里定义了一个number类型的数组,数组内容只能是number类型的, 不能出现其他类型,不能像ES5一样数组的内容能包含其他类型

    第二种定义数组方法

    // 2、定义数组方法二(使用泛型方法)
    let arrd:Array<number> = [23,4,545,5.3]; 

    五、 元组类型 --- tuple

      元组类型是属于数组类型的一种

    // 元组类型, 元组方式可以定义多种类型
    let arr:[string,number,boolean] = ["ts", 3, false]

    六、枚举类型 --- enum  

      枚举类型用于定义标识符

    /**
     *  写代码的时候很多都会出现数字代表状态,写的时候还记得, 过了一段事件了可能就忘记了,使用枚举,定义类型的枚举类型
        pay_status 0 未支付, 1支付, 2交易成功
     */
    enum Pay_status {
        unpaid=0,
        payment=1,
        successful=2
    }
    
    let payStauts:Pay_status = Pay_status.unpaid;// 0

    写法和用法有点像Object对象的key和value,要注意的是, 枚举中用的是等号

    // 如果给枚举的类型,没有赋值,默认就是索引值
    enum Color{
        red,blue,orange
    }
    let c:Color = Color.red;
    
    console.log(c) // 输出: 0

    可以查看编译后的ES5代码

    "use strict";
    // 基本的数据类型
    // 枚举类型
    // 如果给枚举的类型,没有赋值,默认就是索引值
    var Color;
    (function (Color) {
        Color[Color["red"] = 0] = "red";
        Color[Color["blue"] = 1] = "blue";
        Color[Color["orange"] = 2] = "orange";
    })(Color || (Color = {}));
    var c = Color.red;
    console.log(c); // 输出: 0

    注意: 索引值从0开始

    如果其中一个赋值了,那么索引值会发生变化

    enum Color{
        red,blue=5,orange
    }
    let c:Color = Color.blue;
    
    console.log("c等于" + c) // 输出: 5

     前面 blue赋值5, 后面 orange 默认没有值,就会以上一个为基准  变成了6 

    如果前面有一个赋值的不是number,那么就不能作为索引了,会出现错误,前面有个一是其他类型,后面的也必须要赋值

    七、任意类型 --- any

      任意类型,可以改变变量的类型

      针对编程时类型不明确的变量使用的一种数据类型

    // 定义存储各种类型数据的数组时
    let arrayList: any[] = [1, false, 'fine'];
    arrayList[1] = 100;

      比如我们要获取一个DIV的id为“oBox”的DOM节点, DOM对象出现了报错的提示,typeScript不知道这个oBox是一个DOM对象,所以我们要定义个任意类型

    八、null  和 undefined

       其他(never类型)类型的子类型

     变量定义了,但是没有赋值,都是undefined

     如果给定变量定义了undefined,就不会出现警告

      代码中会出现有些值会是number或者undefined

     null的用法基本一致

     

    如果一个元素可能是number类型,可能是 null 可能是 undefined

    // null 和 undefined
    var num:null|number|undefined;
    num = 456;
    console.log(num);

     九、void类型

      表示没有任何类型,一般用于定义方法,表示该方法没有返回值的时候使用void

    // ES5用法
    function run() {
        console.log("run")
    }
    // typeScript 如果方法没有返回值需要写上 void,表示方法没有返回任何类型
    function run():void {
        console.log("run")
    }

    如果需要返回什么类型,就写入什么类型

            

     十、never类型

      其他类型,包括null和undefined(null和undefined是属于never的子类)代表从不会出现的值,这就是意味声明never的变量只能被 never的值赋值

    只能赋值给undefined类型, 赋值给其他类型都出现了警告

    never 是不能赋值的,抛出了错误, never正确

  • 相关阅读:
    设计模式
    软件的架构与设计模式之经典架构模式简介
    Rose与PowerDesigner:两款建模工具的对比
    C#中Socket多线程编程实例 [转载]
    C#串口控制
    .NET反射、委托技术与设计模式
    求多个数的质因子
    求单个数的欧拉函数
    基本欧拉函数
    hdu 2157(矩阵的快速幂)
  • 原文地址:https://www.cnblogs.com/yangWanSheng/p/14934800.html
Copyright © 2011-2022 走看看