zoukankan      html  css  js  c++  java
  • 【typeScript 02】包含的数据类型

    TypeScript 包含的数据类型如下

    0. void 类型

    用于定义函数时,表示函数没有返回任何类型

    • function run(): void {
          console.log('Run Run Run!');
      }

     

    1. Any 类型

    • 声明为 any 的变量可以赋予任意类型的值
    • 任意值 是 TypeScript 针对 编程时类型不明确的变量 使用的一种数据类型

    它常用于以下三种情况

    1) 变量的值会动态改变时

    • <p>1、变量的值会动态改变时,比如来自用户的输入,任意值类型可以让这些变量跳过编译阶段的类型检查,示例代码如下:</p>
      
      let x: any = 1;    // 数字类型
      x = 'I am who I am';    // 字符串类型
      x = false;    // 布尔类型

    2) 任意值允许在编译时可选择地包含或移除类型检查

    • let x: any = 4;
      x.ifItExists();    // 正确,ifItExists方法在运行时可能存在,但这里并不会检查
      x.toFixed();    // 正确

    3) 定义存储各种类型数据的数组时

    • let arrayList: any[] = [1, false, 'fine'];
      arrayList[1] = 100;

     

    2. null 类型

    表示对象值缺失

    在 JavaScript 中 null 表示 "什么都没有"。

    null 是一个只有一个值的特殊类型。表示一个空对象引用。

    用 typeof 检测 null 返回是 object

     

    3. undefined

    用于初始化变量为一个未定义的值

    在 JavaScript 中, undefined 是一个没有设置值的变量。

    typeof 一个没有值的变量会返回 undefined。

    Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined。

    而在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型

    • // 启用 --strictNullChecks
      let x: number;
      x = 1; // 运行正确
      x = undefined;    // 运行错误
      x = null;    // 运行错误

    如果一个类型可能出行 null 或 undefined, 可以用 | 来支持多种类型

    • // 启用 --strictNullChecks
      let x: number | null | undefined;
      x = 1; // 运行正确
      x = undefined;    // 运行正确
      x = null;    // 运行正确

     

    4. never 类型

    • 代表从不会出现的值
    • never 是其它类型(包括 null 和 undefined)的子类型
    • never 类型的变量只能被 never 类型所赋值

    在函数中它通常表现为 抛出异常无法执行到终止点(例如无限循环

    • let x: never;
      let y: number;
      
      // 运行错误,数字类型不能赋值给 never 类型
      x = 123;
      
      // 运行正确,never 类型可以赋值给 never类型
      x = (()=>{ throw new Error('exception')})();
      
      // 运行正确,never 类型可以赋值给 数字类型
      y = (()=>{ throw new Error('exception')})();
      
      // 返回值为 never 的函数可以是抛出异常的情况
      function error(message: string): never {
          throw new Error(message);
      }
      
      // 返回值为 never 的函数可以是无法被执行到的终止点的情况
      function loop(): never {
          while (true) {}
      }

     

    5. boolean 布尔类型

    表示逻辑值:true false

    • const flag: boolean = false;

     

    6. number 数值类型

    • 双精度 64 位浮点值。
    • 它可以用来表示 整数分数
    • let numTest = () => {
          let num: number = 0;
          console.log('numInit = ' + num);
          num = 1;
      
          // 将一个字符串 赋值 给一个 number 类型的变量
          // num = 'a string'; // 会 ts 报错,但是仍然可以编译运行
          return num;
      }

     

    7. string 字符串类型

    一个字符系列使用

    单引号(')

    双引号(")

    来表示字符串类型

    • 反引号(`)来定义多行文本和内嵌表达式。
    • let name: string = "Runoob";
      let years: number = 5;
      let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
    • let stringTest = () => {
          let str: string = 'Hello, ts';
          console.log('strInit = ' + str);
          str = 'Hello, worktile';
          return str;
      }

     

    8. array 数组类型

    • let arrStr: string[] = ['Hello, ', 'ts'];
      console.log('arrStr = ' + arrStr);
      let arrNum: Array
      <number> = [3, 2, 1, 0];

     

    9. tuple 元组类型

    • 属于数组的一种,可以指定数组里面每个元素的类型
    • let tupleArr: [string[], number] = [['Hello, ', 'ts'], 666666];
      console.log('tupleArr = ' + tupleArr);
      tupleArr.push(
      444); // 数组前面的两个元素指定了类型,不影响后面的元素

     

    10. enum 枚举类型

    定义标识符:标识状态 或 固定值

    枚举:枚举状态的值,定义一个具有代表意义的单词

    • 背景:

    尚可接受:---- 0 代表 关,1 代表 开

    不直观,可读性差:---- 0代表周一, 1代表周二, 2代表周三, 3代表周四, 4代表周五, 5代表周六, 6代表周日

    • 解决:

    使用相应的单词,来代表某一状态 ---- 使程序易阅读易理解

    • 定义一个枚举类型:

     

    • enum 枚举类型名 {
          标识符[=整型常数],
          标识符[=整型常数],
          ...
          标识符[=整型常数]
      };

      实例:

      /**** 1. 定义一个枚举类型 ****/
      // 设计数据: pay_status    2未支付    4已支付    6交易结束
      enum PayStatus {
          payWait = 2,
          payDone = 4,
          overPay = 6
      }
      /**** 2. 使用枚举变量 PayStatus.payWait ****/
      let phoneWaitPay: PayStatus = PayStatus.payWait; // 2
      /**** 官网1. 定义一个枚举类型 ****/
      // 设计数据: Color    0 red    1 blue    2 orange
      enum Color {
          red,
          blue,
          orange
      } // 其实就是告诉我们,可以不指定值,默认从 0 开始
      /**** 官网2. 使用枚举变量 Color.blue ****/
      let bColor: Color = Color.blue; // 1
      /**** 官网1. 定义一个枚举类型 ****/
      // 设计数据: Color    0 red    1 blue    2 orange
      enum Color {
          red,
          blue = 5,
          orange
      } // 其实就是告诉我们,可以不指定值,默认从 0 开始
      // 可以从某处开始指定值,后面的值累加
      /**** 官网2. 使用枚举变量 Color.blue ****/
      let rColor: Color = Color.red; // 0
      let bColor: Color = Color.blue; // 5
      let oColor: Color = Color.orange; // 6
    • let enumTest = () => {
          enum PayStatus {payWait = 2, payDone = 4, overPay = 6}
          console.log(PayStatus.payWait); // 2
          console.log(PayStatus.payDone); // 4
          console.log(PayStatus.overPay); // 6
      
          console.log(Object.prototype.toString.call(PayStatus)); // [object Object]
          console.log(PayStatus);
          console.log(PayStatus[2]); // 'payWait'
          /**enum PayStatus {payWait = 2, payDone = 4, overPay = 6}
           上面的代码转成 ES5 其实就是
              var PayStatus;
              (function (PayStatus) {
                  PayStatus[PayStatus["payWait"] = 2] = "payWait";
                  PayStatus[PayStatus["payDone"] = 4] = "payDone";
                  PayStatus[PayStatus["overPay"] = 6] = "overPay";
              })(PayStatus || (PayStatus = {}));
           最终创建了一个对象:
              var PayStatus = {
                  '2': 'payWait',
                  '4': 'payDone',
                  '6': 'overPay',
                  payWait: 2,
                  payDone: 4,
                  overPay: 6
               }
           */
      
          enum Color {red, green, blue}
          console.log(Color.red); // 0
          console.log(Color.green); // 1
          console.log(Color.blue); // 2
      
          enum RGB {red, green = 5, blue}
          console.log(RGB.red); // 0
          console.log(RGB.green); // 5
          console.log(RGB.blue); // 6 上一个 枚举属性 的值 + 1
          return RGB;
      }

     

    --------小尾巴 ________一个人欣赏-最后一朵颜色的消逝-忠诚于我的是·一颗叫做野的心.决不受人奴役.怒火中生的那一刻·终将结束...
  • 相关阅读:
    牛客网 剑指Offer JZ16 合并两个排序的链表
    牛客网 剑指Offer JZ15 反转链表
    牛客网 剑指Offer JZ14 链表中倒数最后k个结点
    牛客网 剑指Offer JZ12 数值的整数次方 经典快速幂
    牛客网 剑指offer-JZ10 矩形覆盖
    牛客网 剑指offer-JZ9 跳台阶扩展问题
    牛客网 剑指offer-JZ8 跳台阶
    牛客网 剑指offer-JZ7 斐波那契数列
    牛客网 剑指offer-JZ6 旋转数组的最小数字
    codility_ BinaryGap
  • 原文地址:https://www.cnblogs.com/tianxiaxuange/p/10967780.html
Copyright © 2011-2022 走看看