<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 聯合類型 聯合類型(Union Types)表示取值可以為多種類型中的一種。 ## 簡單的例子 ```ts let myFavoriteNumber: string | number; myFavoriteNumber = 'seven'; myFavoriteNumber = 7; ``` ```ts let myFavoriteNumber: string | number; myFavoriteNumber = true; // index.ts(2,1): error TS2322: Type 'boolean' is not assignable to type 'string | number'. // Type 'boolean' is not assignable to type 'number'. ``` 聯合類型使用 `|` 分隔每個類型。 這里的 `let myFavoriteNumber: string | number` 的含義是,允許 `myFavoriteNumber` 的類型是 `string` 或者 `number`,但是不能是其他類型。 ## 訪問聯合類型的屬性或方法 當 TypeScript 不確定一個聯合類型的變量到底是哪個類型的時候,我們**只能訪問此聯合類型的所有類型里共有的屬性或方法**: ```ts function getLength(something: string | number): number { return something.length; } // index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. ``` 上例中,`length` 不是 `string` 和 `number` 的共有屬性,所以會報錯。 訪問 `string` 和 `number` 的共有屬性是沒問題的: ```ts function getString(something: string | number): string { return something.toString(); } ``` 聯合類型的變量在被賦值的時候,會根據類型推論的規則推斷出一個類型: ```ts let myFavoriteNumber: string | number; myFavoriteNumber = 'seven'; console.log(myFavoriteNumber.length); // 5 myFavoriteNumber = 7; console.log(myFavoriteNumber.length); // 編譯時報錯 // index.ts(5,30): error TS2339: Property 'length' does not exist on type 'number'. ``` 上例中,第二行的 `myFavoriteNumber` 被推斷成了 `string`,訪問它的 `length` 屬性不會報錯。 而第四行的 `myFavoriteNumber` 被推斷成了 `number`,訪問它的 `length` 屬性時就報錯了。 ## 參考 - [Advanced Types # Union Types](http://www.typescriptlang.org/docs/handbook/advanced-types.html#union-types)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Advanced%20Types.html#聯合類型)) --- - [上一章:類型推論](type-inference.md) - [下一章:對象的類型——接口](type-of-object-interfaces.md)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看