美文网首页
TypeScript 中的基本数据类型

TypeScript 中的基本数据类型

作者: 暖A暖 | 来源:发表于2021-03-01 10:40 被阅读0次

    本节我们学习 TypeScript 语言中的数据类型,有:数字类型、字符串类型、布尔值、数组、元组等等。TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

    数字类型

    JavaScript 中一样,TypeScript 中的所有数字都是浮点数。这些浮点数的类型为 number 类型。number 类型除了支持十进制和十六进制字面量,还支持 ECMAScript 2015 中引入的二进制和八进制字面量。

    示例:

    声明数字类型的变量,可以是二进制、十进制、十六进制、八进制表示形式:

    let n1: number = 8;          // 十进制
    let n2: number = 0xf00d;     // 十六进制
    let n3: number = 101010;     // 二进制
    let n4: number = 0o633;      // 八进制
    console.log(n1, n2, n3, n4);
    

    编译成 JavaScript 代码:

    var n1 = 8;      // 十进制
    var n2 = 0xf00d; // 十六进制
    var n3 = 101010; // 二进制
    var n4 = 411;    // 八进制
    console.log(n1, n2, n3, n4);
    
    // 8 61453 101010 411
    

    什么是十进制、二进制、八进制、十六进制:

    • 十进制:十进制数就是用 012 ....9,这十个数来表示的数。
    • 二进制:二进制数据是用 01 两个数码来表示的数。它的基数为 2,进位规则是“逢二进一”,借位规则是“借一当二”。
    • 八进制:八进制是一种以 8 为基数的计数法,采用 01234567 八个数字,逢八进 1
    • 十六进制:十六进制是计算机中数据的一种表示方法。同我们日常中的十进制表示法不一样。一般用数字 09 和字母 AF(或 a~f)表示,这些数字和字母任意组合用来表示 0~15 之间的某个字。其中 A~F 表示 10~15,这些称作十六进制数。

    布尔类型

    布尔类型 boolean 表示逻辑值,只有 truefalse 这两个值。

    示例:

    例如声明两个布尔类型的变量,并输出:

    const b1: boolean = true;
    const b2: boolean = false;
    
    console.log(b1, b2);
    

    将上述代码编译成 JavaScript 代码:

    var b1 = true;
    var b2 = false;
    console.log(b1, b2);
    

    输出:

    true false
    

    字符串类型

    字符串类型 string 用于表示文本数据类型,与 JavaScript 中一样,可以使用单引号 ' 或双引号 " 来表示字符串。

    示例:

    声明一个字符串类型的变量:

    let str: string = "侠课岛";
    console.log(str);
    

    输出:

    侠课岛
    

    数组类型

    数组类型有两种表示方法,第一种在元素类型后接上中括号 [],表示此类型元素组成的一个数组。

    示例:

    例如声明一个由数字类型组成的数组 num,和一个由字符串类型组成的数组 character

    // 在元素类型后面加上[],定义数字类型数组
    let num: number[] = [1, 2, 3];
    console.log(num);
    
    // 定义字符串类型数组
    let character: string[] = ['a', 'b', 'c'];
    console.log(character);
    

    第二种方式是使用数组泛型,格式为 Array<元素类型>

    示例:

    例如声明一个数字类型的数组:

    // 使用数组泛型
    let arr: Array<number> = [1, 2, 3];
    console.log(arr2);
    

    将上面的代码都编译成 JavaScript 代码:

    // 使用数组泛型
    var arr = [1, 2, 3];
    console.log(arr2);
    

    输出:

    [ 1, 2, 3 ]
    

    元组类型

    元组表示已知元素数量和类型的数组,元组中的元素可以由是不同类型,但是要注意,所定义类型的个数和顺序必须与元素值一一对应,少一个都不行。

    示例:

    声明一个元组,元组中的第一个元素为字符串类型,第二个元素为数字类型:

    // 类型和值必须一一对应
    let tuple: [string, number] = ['小飞侠', 18];    
    
    console.log(tuple);
    console.log(tuple[0]);   
    

    编译成 JavaScript 代码:

    // 类型和值必须一一对应
    var tuple = ['小飞侠', 18]; 
    console.log(tuple);
    console.log(tuple[0]); 
    

    输出:

    [ '小飞侠', 18 ]
    小飞侠
    

    枚举类型

    枚举类型 enum 用于定义数值集合。

    示例:

    声明一个枚举类型的变量 Fruits,这个变量中有三个不同的值:

    enum Fruits {watermelon, Apple, Litchi};
    console.log(Fruits);
    

    将代码编译成 JavaScript 代码:

    var Fruits;
    (function (Fruits) {
        Fruits[Fruits["watermelon"] = 0] = "watermelon";
        Fruits[Fruits["Apple"] = 1] = "Apple";
        Fruits[Fruits["Litchi"] = 2] = "Litchi";
    })(Fruits || (Fruits = {}));
    ;
    console.log(Fruits);
    

    执行代码后输出结果为:

    {
      '0': 'watermelon',
      '1': 'Apple',
      '2': 'Litchi',
      watermelon: 0,
      Apple: 1,
      Litchi: 2
    }
    

    any 任意类型

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

    示例:

    例如声明一个 any 类型的变量 unknown

    let unknown: any;
    unknown = 7;         // 数字类型
    console.log(unknown);
    
    unknown = 'xkd';     // 字符串类型
    console.log(unknown);
    
    unknown = false;     // 布尔类型
    console.log(unknown);
    

    将上述代码编译成 JavaScript 代码:

    var unknown;
    unknown = 7; // 数字类型
    console.log(unknown);
    unknown = 'xkd'; // 字符串类型
    console.log(unknown);
    unknown = false; // 布尔类型
    console.log(unknown);
    

    输出:

    7
    xkd
    false
    

    void 类型

    Java 等语言中,如果一个方法没有返回值,则默认该方法返回值类型为 void 类型。

    JavaScript 中并没有此类型,这个 TypeScript 新增的类型。

    void 可用于标识方法返回值的类型,表示该方法没有返回值。

    示例:

    如果定义函数时,没有返回值,建议在函数名后面接一个 void。例如下面这个函数 show() ,我们没有给它指定返回值,所以指定这个函数的返回值为 void 类型:

    function show(): void {
        console.log("你好,侠课岛!");
    }
    
    // 调用函数
    show();  
    

    编译成 JavaScript 代码:

    function show() {
        console.log("你好,侠课岛!");
    }
    // 调用函数
    show();
    

    输出:

    你好,侠课岛!
    

    Null类型和Undefined 类型

    null 类型和 undefined 类型与 JavaScript 中的对应类型非常类似,这两个类型分别是 Null 类型和 Undefined 的直接量,也是唯一的值。

    示例:
    var n = null;
    var u = undefined;
    console.log(n, u);   // null undefined
    

    Never类型

    Never 类型表示的是那些永不存在的值的类型。

    示例:

    在声明变量时,我们可以将变量声明为 never 类型:

    let a: never;
    

    never 类型是任何类型的子类型,也可以赋值给任何类型。

    示例:
    let a: never;
    let b: number;
    let c: string;
    // never类型可以赋值给never类型
    a = (()=>{ 
        throw new Error('xkd');
    })();
    
    // never类型可以赋值给number类型
    b = (()=>{
        throw new Error('xkd');
    })();
    
    // never类型可以赋值给string类型
    c = (()=>{ 
        throw new Error('xkd');
    })();
    

    但是没有类型是 never 的子类型或可以赋值给 never 类型,即使 any 也不可以赋值给 never

    示例:

    例如将数字类型的值赋值给 never 类型:

    let a: never;
    a = 100;    
    
    // 输出: Type '100' is not assignable to type 'never'
    

    链接:https://www.9xkd.com/

    相关文章

      网友评论

          本文标题:TypeScript 中的基本数据类型

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