美文网首页
TypeScript简单入门(六):TypeScript联合类型

TypeScript简单入门(六):TypeScript联合类型

作者: 曲昶光 | 来源:发表于2021-10-24 19:01 被阅读0次

    联合类型(Union Types)表示取值可以为多种类型中的一种。
    简单的例子

    let myFavoriteNumber:string|number;
    myFavoriteNumber='seven';
    myFavoriteNumber=7;
    myFavoriteNumber=true//Type 'boolean' is not assignable to type 'string | number'.
    

    联合类型使用 | 分隔每个类型。这里的 let myFavoriteNumber: string | number 的含义是,允许 myFavoriteNumber 的类型是 string 或者 number,但是不能是其他类型。

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

    当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法:

    function getLength(someting:string|number):number{
        return someting.length;//Property 'length' does not exist on type 'string | number'.   Property 'length' does not exist on type 'number'.
    }
    

    上例中,length 不是 string 和 number 的共有属性,所以会报错。访问 string 和 number 的共有属性是没问题的:

    function getString(something:string|number):string{
        return something.toString()
    }
    

    联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:

    let myFavoriteNumber:string|number;
    myFavoriteNumber='seven';
    console.log(myFavoriteNumber.length);//5 myFavoriteNumber 被推断成了 string,访问它的 length 属性不会报错
    myFavoriteNumber=7;
    console.log(myFavoriteNumber.length);//Property 'length' does not exist on type 'number'.这里报错的原因是myFavoriteNumber 
    被推断成了 number,访问它的 length 属性时就报错了
    

    相关文章

      网友评论

          本文标题:TypeScript简单入门(六):TypeScript联合类型

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