2022年9月

  • 打开网址: chrome://sync-internals/
  • 点击 Disable Sync (Clear Data)
  • 点击 Request Start

数字枚举

  • 默认情况下就是数字枚举

    enum Gender {
      Male,
      Female
    }
    
    console.log(Gender.Male);
    console.log(Gender.Female);
  • 数字枚举注意点:

    • 数字枚举的取值默认从 0 开始递增

      enum Gender {
       Male,
       Female
      }
      
      console.log(Gender.Male);
      console.log(Gender.Female);
    • 数字枚举的取值可以是字面量, 也可以是常量, 也可以是计算的结果

      • 字面量:

        enum Gender {
        Male = 1,
        Female
        }
        
        console.log(Gender.Male);
        console.log(Gender.Female);
      • 常量,如果使用常量给前面的枚举值赋值了, 那么后面的枚举值也需要手动的赋值:

        const num = 666;
        
        enum Gender {
        Male = num,
        Female = 1
        }
        
        console.log(Gender.Male);
        console.log(Gender.Female);
      • 计算的结果,如果使用计算结果给前面的枚举值赋值了, 那么后面的枚举值也需要手动的赋值:

        function getNum() {
        return 888;
        }
        
        enum Gender {
        Male = getNum(),
        Female = 1
        }
        
        console.log(Gender.Male);
        console.log(Gender.Female);

枚举反向映射

  • 可以根据枚举值获取到原始值

    enum Gender {
      Male,
      Female
    }
    
    console.log(Gender.Male);
  • 也可以根据原始值获取到枚举值

    enum Gender {
      Male,
      Female
    }
    
    console.log(Gender[0]);

字符串枚举

  • 如果使用字符串给前面的枚举值赋值了, 那么后面的枚举值也必须手动赋值

    enum Gender {
      Male = 'www.it6666.top',
      Female = 'BNTang'
    }
    
    console.log(Gender.Male);
    console.log(Gender.Female);
  • 字符串枚举注意点

    • 如果使用字符串给前面的枚举值赋值了, 那么后面的枚举值也必须手动赋值上面已经介绍了
    • 和数字枚举不一样, 字符串枚举不能使用常量或者计算结果给枚举值赋值
    • 虽然字符串枚举不能够使用常量或者计算结果给枚举值赋值, 但是它可以使用内部的其它枚举值来赋值
    enum Gender {
      Male = 'BNTang',
      Yao = Male
    }
    
    console.log(Gender.Male);
    console.log(Gender.Yao);

异构枚举

  • 枚举中既包含数字又包含字符串, 我们就称之为 异构枚举

    enum Gender {
      Male = 6,
      Female = 'nv'
    }
    
    console.log(Gender.Male);
    console.log(Gender.Female);
  • 注意点:如果是字符串枚举, 那么无法通过原始值获取到枚举值:

    enum Gender {
      Male = 6,
      Female = 'nv'
    }
    
    console.log(Gender['nv']);
    console.log(Gender);

数据类型

  • boolean: 布尔
  • number: 数值
  • string: 字符串
  • Array: 数组
  • tuple: 元组 (属于数组的一种)
  • enum: 枚举
  • any: 任意
  • null
  • undefined: 变量定义后, 没有赋值
  • void
  • never

定义变量

var demo: boolean = true;  // 定义一个布尔类型的变量

定义数组, 两种方式

var arr1: number[] = [1, 2, 3];
var arr2: Array<number> = [1, 2, 3];

定义元组 (给数组中的每个元素指定类型)

var t: [string, number, boolean] = ["a", 1, true]

枚举类型

enum Flag {
success = 1,
error = -1
}
var f: Flag = Flag.success;

如果声明枚举的时候不赋值, 则输出的值是索引值, 索引从0开始

enum Flag {a, b, c}
console.log(Flag.b); // 这里输出1

给变量指定多种数据类型

var a: number | boolean ;
a = 123; 
a = true;