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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # Interface 與 Type 的區別 ~~~ 1.接口可以重復定義的接口類型,它的屬性會疊加,類型別名不行 interface Language { id: number } interface Language { name: string } let lang: Language = { id: 1, // ok name: 'name', // ok } // 如果使用類型別名 /** ts(2300) 重復的標志 */ type Language = { id: number } /** ts(2300) 重復的標志 */ type Language = { name: string } let lang: Language = { id: 1, name: 'name', } ~~~ ~~~ 2.type 可以使用聯合類型和交集,interface 不能使用聯合類型和交集組合 type Pet = Dog | Cat // 具體定義數組每個位置的類型 type PetList = [Dog, Pet] ~~~ ~~~ 3.type 支持類型映射,interface不支持 type Keys = "firstname" | "surname" type DudeType = { [key in Keys]: string } const test: DudeType = { firstname: "Pawel", surname: "Grzybek" } // 報錯 //interface DudeType { // [key in keys]: string //} ~~~ >[info] ## 都允許拓展(extends) interface 和 type 都可以拓展,并且兩者并不是相互獨立的,也就是說 interface 可以 extends type, type 也可以 extends interface 。 **雖然效果差不多,但是兩者語法不同**。 >[danger]#### interface extends interface ~~~ interface Name { name: string; } interface User extends Name { age: number; } ~~~ >[danger]#### type extends type ~~~ type Name = { name: string; } type User = Name & { age: number }; ~~~ >[danger]#### interface extends type ~~~ type Name = { name: string; } interface User extends Name { age: number; } ~~~ >[danger]#### type extends interface ~~~ interface Name { name: string; } type User = Name & { age: number; } ~~~ >[info] ## 總結 interface 只能用于定義對象類型和方法,而 type 的聲明方式除了對象之外還可以定義交叉、聯合、原始類型等,類型聲明的方式適用范圍顯然更加廣泛。 但是interface也有其特定的用處: * interface 方式可以實現接口的 extends 和 implements * interface 可以實現接口合并聲明 >[info] ## 參考 [Typescript 中的 interface 和 type 到底有什么區別 ](https://juejin.cn/post/6844903749501059085)
                  <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>

                              哎呀哎呀视频在线观看