美文网首页
TypeScript学习2、TS数据类型

TypeScript学习2、TS数据类型

作者: 喜欢骑着蜗牛散步 | 来源:发表于2019-10-16 17:21 被阅读0次

    1、布尔类型。

    let bool: boolean;
    bool = false;
    

    2、数值类型(包括浮点型, 二进制 八进制 十六进制数值))。

    let num: number = 1.2;
    let num1: number = NaN;
    let num2: number = Infinity;
    let num3: number = 1111101000; // 二进制
    let num4: number = 3e8; // 16进制
    

    3、字符串类型。

    let str: string;
    str = '123456789';
    str = `数值是${num}`;
    

    4、数组类型。
    写法一

    let arr: number[];
    arr = [1,2,0];
    

    写法二

    let arr2: Array<number>;
    arr2 = [1,2,0];
    

    联合类型数组

    let arr3: (string | number)[] or let arr3: Array<string | number>;
    arr3 = [1,2,'0'];
    

    5、元组类型:和数组类似,但是元组中的数据类型顺序、长度必须和规定的类型顺序、长度对应起来。

    let tuple: [string, number, boolean];
    tuple = ['1', 2, true];
    

    6、枚举类型:一个枚举可以包含零个或多个枚举成员,枚举成员具有一个数字值,它可以是常数或计算得出的值,如果没有初始化就会被当作常数,这是第一项为0,其余为前一项加一。

    enum CarStatus{
        ON_lINE,
        OUT_LINE = 2,
        WARNING
    }
    console.log(CarStatus.WARNING)
    

    7、any类型:任意类型。

    let cy: any;
    cy = false;
    cy = 'dsadsa';
    cy = [1,2,2,'fdfsd']
    let arr4 : Array<any> = [1,2,'ddd']
    let arr5 : any[] = [1,2,'ddd']
    

    8、void类型:什么类型都不是,可以赋值undefined 和 null。

    const playFun = (str: string): void =>{
        console.log(str)
    }
    playFun("1")
    let v: void = undefined;
    let v1: void = null; // 在关闭严格模式下才启作用否则报错
    

    9、null和undefined:在关闭严格模式下null和undefined类型是其他类型的子类型。

    let n1: null;
    n1 = null;
    let n2: undefined;
    n2 = undefined;
    

    10、never类型:表示永远不存在的值,never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。

    一、抛出异常的情况是never类型。

    function error(message: string): never {
        throw new Error(message);
    }
    

    二、无线循环也是never类型。

    function loop(): never {
        while (true) {}
    }
    

    11、object对象。

    let obj = {
        name: 'dddd'
    }
    let obj2 = obj;
    obj2.name = 'aaaa';
    console.log(obj)
    function getObj(obj: object): void{
        console.log(obj)
    }
    getObj(obj)
    

    12、类型断言:将一个联合类型的变量指定为一个更加具体的类型,<string>str 或者 str as string 在JSX语法中只能使用(str as string)这种方式。
    下面看一个例子...

    const getLength = (str: string | number): number => {
        if (str.length || str.length === 0) {
            return str.length
        } else {
            return str.toString().length
        }
    }
    //ERROR in basic-type.ts(90,20)TS2339: Property 'length' does not exist on type 'string | number'.Property 'length' does not exist on type 'number'.
    

    上例中,获取 str.length 的时候会报错。此时可以使用类型断言,将 str断言成 string:

    const getLength1 = (str: string | number): number => {
        if ((str as string).length || (str as string).length === 0) {
            return (str as string).length
        } else {
            return str.toString().length
        }
    }
    console.log(getLength1('hello')) //5
    

    相关文章

      网友评论

          本文标题:TypeScript学习2、TS数据类型

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