<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          接口 vs 類(lèi)型別名

          共 1004字,需瀏覽 3分鐘

           ·

          2021-03-29 21:41


          類(lèi)型別名會(huì)給一個(gè)類(lèi)型起個(gè)新名字。類(lèi)型別名有時(shí)和接口很像,但是可以作用于原始值,聯(lián)合類(lèi)型,元組以及其它任何你需要手寫(xiě)的類(lèi)型。


          type Name = string;type NameResolver = () => string;type NameOrResolver = Name | NameResolver;function getName(n: NameOrResolver): Name {    if (typeof n === 'string') {        return n;    }    else {        return n();    }}


          起別名不會(huì)新建一個(gè)類(lèi)型,只是創(chuàng)建了一個(gè)新名字來(lái)引用那個(gè)類(lèi)型。給原始類(lèi)型起別名通常沒(méi)什么用,只是一種使用形式。


          同接口一樣,類(lèi)型別名也可以是泛型,我們可以添加類(lèi)型參數(shù)并且在別名聲明的右側(cè)傳入:

          type Container<T> = { value: T };


          我們也可以使用類(lèi)型別名來(lái)在屬性里引用自己:

          type Tree<T> = {    value: T;    left: Tree<T>;    right: Tree<T>;}


          然而,類(lèi)型別名不能出現(xiàn)在聲明右側(cè)的任何地方。

          type Yikes = Array<Yikes>; // error


          像我們提到的,類(lèi)型別名可以像接口一樣;然而,仍有一些細(xì)微差別。


          另一個(gè)重要區(qū)別是類(lèi)型別名不能被 extends 和 implements(自己也不能 extends 和 implements 其它類(lèi)型)。因?yàn)?軟件中的對(duì)象應(yīng)該對(duì)于擴(kuò)展是開(kāi)放的,但是對(duì)于修改是封閉的,你應(yīng)該盡量去使用接口代替類(lèi)型別名。


          字符串字面量類(lèi)型允許你指定字符串必須的固定值。在實(shí)際應(yīng)用中,字符串字面量類(lèi)型可以與聯(lián)合類(lèi)型,類(lèi)型保護(hù)和類(lèi)型別名很好的配合。通過(guò)結(jié)合使用這些特性,你可以實(shí)現(xiàn)類(lèi)似枚舉類(lèi)型的字符串。


          type Easing = "ease-in" | "ease-out" | "ease-in-out"


          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本欧美视频网站 | 操逼十八禁 | 国产V在线最新观看视频 | 亚洲AV无码国产精品牛牛影视 | 午夜福利人人妻人人澡人人爽 |