typescript 學習筆記 (ts )持續更新

此文爲 https://ts.xcatliu.com/ TypeScript入門教程的讀書筆記
概念:
ts是js的超集。.js直接命名爲.ts便可。vue

優勢:
1.根據定義的類型可使人很快明白如何使用;非顯示定義類型能夠作出類型推論es6

2.編譯時便可發現不少錯誤(但即便編譯報錯也能夠生成js文件)typescript

3.兼容不少第三方庫,支持es6規範,社區活躍npm

缺點:
1.須要學習新的類型概念如接口Interface,泛型Generic,類Classes,枚舉類型Enums數組

2.集成到構建須要工做量函數

3.和某些庫結合不夠完美如vue學習

安裝
安裝 npm install -g typescriptcode

編譯 tsc xx.ts對象

知識要點:
1.以 變量:類型 這種寫法指定變量類型,:先後有無空格均可以教程

如:let aaa :number = 1;

2.原始數據類型6種:

①boolean布爾值

( 注意:let b = new Boolean(),b不是一個布爾值,是一個對象)

②number數值

③string字符串

④null

⑤undefined

(注意:在ts中,null和undefined能夠被賦值到其餘類型去,如let bbb:number = undefined

⑥symbol

(es6中出現,爲一個不可能與其餘相同的值,惟一存在)

⑦void空值

(js中沒有空值的概念;ts中用void表示沒有任何返回值的函數,如

let sayHi() : void {

alert('hello~');

}

三、ts的類型之任意值Any

// ts是一種強類型語言,已指定其餘類型的變量不能賦值其餘類型的值

// 當定義爲Any類型時,則能夠隨意賦值不一樣類型的值

聲明一個變量爲任意值後,訪問任何屬性和調用任何方法都不報錯,返回的內容的類型都是Any

聲明變量未指定類型時,該變量默認爲Any類型

四、ts的類型推論

當聲明變量時未指定類型但賦值了,則會根據值的類型推測出一個類型做爲該變量的類型,後面如有不一樣類型的賦值則會報錯;

若聲明變量時未指定類型也未賦值,則推論爲Any類型

五、聯合類型

let ddd :string | number;

當聯合類型變量未被賦值時,不知道其確切類型,則只能訪問共有屬性

如ddd.length報錯,ddd.toString()不報錯

聯合類型會以最近一次賦值進行類型推論,推出類型後若訪問另外一個類型的屬性會報錯,只有從新賦值成另外一個類型時訪問其屬性才正確編譯

六、接口類型(對象)

在ts中,用接口Interfaces來定義對象類型

//它是對行爲的抽象,而具體如何行動由類classes去實現implement

//除了用於對類的一部分行爲進行抽象,也能夠用於對 (對象的形狀shape)進行描述

定義接口

interface Person = {

name:string,

age: number

}

聲明變量

let jack:Person = {

name:  'jack',

age: 18

}

聲明的變量必須和接口徹底一致,不能多,不能少,不能不同。

但還有:可選屬性、任意屬性、只讀屬性

①可選屬性如定義時這麼寫: age?: number 那麼聲明變量時age無關緊要都不報錯

②任意屬性:定義時[ propName : string] : any 那麼聲明變量時能夠增長string類型的key和任意類型的value

注意:一旦有了任意屬性,那麼該接口的其餘屬性(包括肯定屬性和可選屬性)都必須是任意屬性的值的類型

如定義了一個[propName: string] : string 屬性,那麼該接口的其餘屬性的值都必須是string,即使是某屬性age定義的爲number,在聲明變量時age賦值爲18則會報錯

③只讀屬性:定義接口時在屬性key前加上readonly。必須在聲明變量時賦值,以後給只讀屬性賦值引起報錯。

七、數組類型

①【類型+[]】表示法

let list:number[] = [1,2,3,4]

let cate: string[] = ['1','2','3','4']

②接口表示法

interface Array = {

[index:number]:number

}

let list : Array = [1,2,3,4]

③數組泛型表示法

詳見後期泛型

④類數組表示法(誤

//類數組不是數組類型,要用接口的方式來描述

如IArguments,Nodelist,HTMLCollection等,以上均爲ts定義好的類型

詳情參考內置對象

未完待續...

相關文章
相關標籤/搜索