Learning TypeScript 讀書筆記3

Chap 4 TypeScript中的面向?qū)ο缶幊?/h3>

1.面向?qū)ο箝_發(fā)的一些原則SOLID:

  • 單一職責(zé)原則SRP:
  • 開閉原則OCP:
  • 里氏替換原則LSP:
  • 接口隔離原則ISP:
  • 依賴翻轉(zhuǎn)原則DIP:

2.T雨棚script支持類class、接口interface。

3.類之間的關(guān)系:

  • 關(guān)聯(lián):有聯(lián)系但是沒有從屬關(guān)系,有獨(dú)立生命周期,例如老師和學(xué)生
  • 聚合:有聯(lián)系屬于從屬關(guān)系,有獨(dú)立生命周期,例如手機(jī)和電池
  • 組合:有聯(lián)系屬于從屬關(guān)系,子對(duì)象沒有獨(dú)立聲明周期,例如問題和答案,問題銷毀了,答案也沒有存在的理由

4.支持繼承特性,使用關(guān)鍵字extends。為了避免多繼承帶來的菱形問題,提供“混合”特性,用于替代多重繼承?;旌希?/p>

  • 使用關(guān)鍵字implements實(shí)現(xiàn)多個(gè)父類,多個(gè)父類不在繼承公共的祖先類(混合只能繼承上一級(jí)的方法)
  • 實(shí)現(xiàn)混合的子類中,聲明implements父類中需要使用的方法
  • 實(shí)現(xiàn)混合的泛型函數(shù):
function applyMixins(derivedCtor:any, baseCtors:any[]){
   baseCtors.forEach(baseCtor=>{
       Object.getOwnPropertyNames(baseCtor.prototype).forEach(name=>{
           if(name!=='constructor'){
               derivedCtor.prototype[name]=baseCtor.prototype[name];
           }
       }
   }
}

混合的限制:

  • 混合只能繼承上一級(jí)的方法
  • 如果父類有相同的方法,那么會(huì)繼承傳入applyMixins第二個(gè)參數(shù)最后一個(gè)類的方法

5.支持泛型類,需要聲明泛型T擁有構(gòu)造函數(shù),如下寫法:

function fatcory<T>():T{
    var type:{new():T;};
    return new type();//直接return new T();報(bào)找不到標(biāo)識(shí)符T,編譯錯(cuò)誤
}

6.命名空間用于組織代碼,屬于內(nèi)部模塊,默認(rèn)私有,需要使用export導(dǎo)出公共部分。例如:

namespace app{
    export class UserModel{//...}
}

命名空間支持嵌套。

7.模塊:與命名空間的區(qū)別是,在聲明了所有的模塊之后,不會(huì)使用<script>引入,而是通過模塊加載器來加載。Javascript在es6之前不支持模塊,常用的模塊加載器有:

  • RequireJS:異步加載AMD
  • Browserify:使用CommonJS
  • SystemJS:通用模塊加載器,支持所有模塊定義語法,如ES6/CommonJS/AMD/UMD

對(duì)于Typescript,在編譯時(shí)使用--module來標(biāo)明使用哪種模塊加載器器。
內(nèi)部模塊例子:

export class UserModel{}

8.Typescript支持ES6的模塊語法:

class UserModel{}
export {UserModl}

這里export也可以寫在class前面。

9.引入模塊使用import:import {UserModel,xxx} from ".models";

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 3,726評(píng)論 2 27
  • 概述 TypeScript本質(zhì)上是向JavaScript語言添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊?,同時(shí)也支持...
    oWSQo閱讀 8,689評(píng)論 1 45
  • 匹夫關(guān) 多年以后還有人記得我嗎 一個(gè)其貌不揚(yáng)的外鄉(xiāng)人 開著破舊的老式摩托 曾一度 開到八仙、紅渡、龍灣 開到,六十...
    廣西趙山河閱讀 541評(píng)論 0 1
  • 星期一,雨天 Beware of mediocrity, it's the fungus of the mind....
    sophietyl閱讀 184評(píng)論 0 0
  • 你是不是把當(dāng)傻子? 晨,我周六早上有事走不了,可能要你要接...
    米修米修嗶哩嗶哩閱讀 247評(píng)論 0 0

友情鏈接更多精彩內(nèi)容