<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[success] # 斷言 -- as ~~~ 1.類型推導會幫我將潛在類型推測出來,但有時候機器并不是絕對的只能,這時候可以用'類型斷言'告訴 TypeScript 按照我們的 方式做類型檢查。 ~~~ >[danger] ##### 案例 ~~~ 1.以下面案例來看,find 找到大于2的數字必然存在的,但實際來看類型推導給出的如圖結果 ~~~ ~~~ const ls: number[] = [1, 2, 3, 4] const getNum = ls.find((item) => item > 2) ~~~ ![](https://img.kancloud.cn/68/ed/68ed58fdbb12beb6f90bc1a4cf2ec8e8_458x110.png) * 此時將上面查找賦值給一個聲明為number 變量會報錯 ![](https://img.kancloud.cn/64/7b/647bf486157190bb321a389faff34eb5_628x141.png) >[danger] ##### 使用as 斷言使其成立 ~~~ const ls: number[] = [1, 2, 3, 4] const getNum:number = ls.find((item) => item > 2) as number // 不在報錯 // const getNum: number = <number>ls.find((item) => item > 2) // 其他寫法 ~~~ >[danger] ##### as 并不是為所欲為 ~~~ 1.as 作為類型斷言來說,并不是想指定是什么類型就可以指定的,類型斷言的約束條件: '父子、子父類型之間可以使用類型斷言進行轉換' ~~~ * string 并不是聯合類型 undefined和number 子集 因此斷言是無效的 ![](https://img.kancloud.cn/b5/26/b52679db7dead815d6db67c742fef1ac_611x129.png) * 子 父 ~~~ const a:"1" = "1" let aa = a // aa = "3" // 報錯 aa = "3" as "1" ~~~ * 父子 ~~~ const ls: number[] = [1, 2, 3, 4] const getNum:number = ls.find((item) => item > 2) as number // 不在報錯 ~~~ >[info] ## as const ~~~ 1.“字面量值 + as const”語法結構進行常量斷言 ~~~ ~~~ /** str 類型是 '"str"' */ let str = 'str' as const; /** readOnlyArr 類型是 'readonly [0, 1]' */ const readOnlyArr = [0, 1] as const; readOnlyArr.push(1) // 報錯 ~~~ ![](https://img.kancloud.cn/92/f8/92f8a957a9aa36547d2b8145dc5b5f90_544x130.png) >[info] ## 指鹿為馬 ~~~ 1.有時候兩個數據長得一樣但是類型不一樣,也就指鹿為馬情況就可以利用斷言向上斷言到父類在向下斷言到子類 2.解決思路:any 和 unknown 這兩個特殊類型屬于萬金油,因為它們既可以被斷言成任何類型,反過來任何類型也都可以被斷 言成 any 或 unknown。因此,如果我們想強行“指鹿為馬”,就可以先把“鹿”斷言為 any 或 unknown,然后再把 any 和 unknown 斷言為“馬”,比如鹿 as any as 馬。 ~~~ ~~~ interface Deer { deerId: number } // 這是馬 interface Horse { horseId: number } // 牽出一只鹿 let deer: Deer = { deerId: 0 } // 這樣會報錯,沒法直接指鹿為馬 let horse = deer as unknown as Horse // 報錯 ~~~
                  <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>

                              哎呀哎呀视频在线观看