美文网首页
typescript中的类型推论和联合类型

typescript中的类型推论和联合类型

作者: mills_han | 来源:发表于2018-06-05 15:14 被阅读0次

    类型推论

    如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。

    下边的变量在定义时没有声明类型,所以typescript会推断出大概是sting类型,在后边getting又在赋值时改变了类型,所以编译时会报错

    let getting = 'hello,world';
    getting = 9999;
    Type '9999' is not assignable to type 'string'.
    
    如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查:
    let myNumber;
    myNumber = 'seven';
    myNumber = 7;     //ok
    

    联合类型

    表示多种类型,取值时可以为多种类型中的一种。
    下面的变量,在赋值时可以是定义类型中的任意一种.

    let number: string | number | number[];
    number = 'seven';
    number = 7;
    number = [0,1,2,3];
    

    访问联合类型的属性或方法

    只能访问联合类型中的共有属性或方法,否则将会报错

    //正确,因为num都有toString方法
    function test(num: string | number) {
      return obj .toString()
    }
    let num = 'server';
    console.log(test(num))
    
    //编译错误,number类型的num 不存在length属性
    function test(num: string | number) {
      return num.length;
    }
    let num = 'server';
    console.log(test(num))
    

    参考文章

    https://www.tslang.cn/index.html
    https://ts.xcatliu.com/basics/type-inference.html
    https://ts.xcatliu.com/basics/union-types.html

    相关文章

      网友评论

          本文标题:typescript中的类型推论和联合类型

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