進化 TypeScript(更新)

2021-07-04 08:09:58 字數 1623 閱讀 4898

首先想說的是學習 ts 之前得先會 js,因為是 ts 是 js 的 superset。如同 c++ 是 c 的 superset 那樣。另外就是這門語言沒那麼痛苦,增加的東西不是很多,這樣學習曲線就應該比較平緩了。

最後因為我對 angular 比較感興趣,所以順勢而為地就把 ts 學習也搞上來了。

官網:安裝 nodejs 和 vsc,然後安裝 npm install -g typescript

tsc -v 顯示 ts 編譯器版本

tsc --init 建立 tsconfig.json

tsc -w 監視目錄自動編譯

暫時沒辦法處理的錯誤,可以在報錯一行上方使用 // @ts-ignore來忽略錯誤

// @ts-ignore
參考:

其實如果你的專案直接是用ts寫的可能用不上namespace, 畢竟export就可以產生模組, 模組天然就有隔離分組作用

//key為string , value為number

var map: = ;

for(let k in map)

函式中 this 如果不明確型別會報錯,我們需要指定一下。js 的 this 其實也是乙個隱藏的引數,於是 ts 中要宣告其型別,直接做法就是把它作為顯示引數,例如,

getname(this: obj): string
但實際編譯後的 js 不會出現這個 this 引數。

函式型別是 function,但是這個太籠統,完全看不出有哪些引數及其型別,和返回型別,於是可以有函式簽名

/**

* 載入指令碼

* * @param url

* @param id

*/export function loadscript(url: string, id?: string, cb?: (ev: event) => any): void

//宣告介面,也是在宣告date這個基礎型別要定義乙個format的擴充套件方法,不寫介面宣告會報錯

inte***ce date

//要寫到class類的外面,不然會劃紅線報錯

date.prototype.format = function (fmt) ;

if (/(y+)/.test(fmt)) fmt = fmt.replace(regexp.$1, (this.getfullyear() + "").substr(4 - regexp.$1.length));

for (var k in o)

if (new regexp("(" + k + ")").test(fmt)) fmt = fmt.replace(regexp.$1, (regexp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));

return fmt;

}

比較 js,ts支援類 class、介面 inte***ce、泛型 generics 這一堆高階的 oop 特性。這樣廣發熟悉 oop 的開發者就可以徜徉在現代化軟體思維中~

除了官網,推薦這裡的教程:

TypeScript踩坑(持續更新)

很多第三方庫已經有自己的型別宣告檔案,比如 types react,types react native,這些需要單獨安裝,而例如mobx react和mobx這種會自帶型別檔案,不需要單獨安裝。我們最近有個新專案,需要照顧到不同同學,有的願意用ts,有的不想用ts,為了照顧到雙方,所有的公共模組都...

進化計算 進化演算法

從今天開始,將進入另一類智慧型優化演算法 進化計算 evolutionary computation 這些演算法更多的是基於達爾文的 演化論 相關理論進行演算法的設計。進化演算法 evolutionary algorithms,eas 通常包括遺傳演算法 genetic algorithms,ga ...

Typescript學習筆記

物件導向特性 類類的宣告 用class關鍵字 加類名 class person 類宣告完之後就可以被例項化了,類相當於乙個模子.name string eat var p1 new person p1.name batman p1.eat var p2 new person p2.name supe...