1. 程式人生 > 資訊 >中國工程院院士陳敬熊逝世:他為中國導彈安上銳利眼睛

中國工程院院士陳敬熊逝世:他為中國導彈安上銳利眼睛

0.前言

  (1)安裝:cmd下輸入npm install -g typescript(npm報錯是因為沒有安裝node.js,自行百度安裝即可)

      安裝成功後輸入tsc有返回資訊即為安裝成功

  (2)使用:基礎語法和js相同,只不過在型別上做了嚴格規範

  (3)理解:可以說和我們學的高階程式語言息息相關,例如java、python等,假如你學過相關語言,學習ts是一件很輕鬆的事,如果沒有學過也沒有關係,這段知識並不難。

1.具體使用

  (1)靜態資料型別

    在js中我們定義資料型別時是沒有規定資料型別的 例如 var/let/const a = 1,但在ts中我們就可以對生成的資料的型別進行定義

    示例如下:

      const count : number = 666;

      const myName : string = '你好';

      // nuLl , undefinde , booLean, void , symboL這些基本資料型別都可以

      const girl:{ name : string, age: number} = { name = 'xiaohong', age = 18}

      const xiaoJieJies : string []= ['1,'2','3']

    在ts中,很多的資料型別都會自動識別,這些是不需要我們去規定其型別的,比如上文中宣告時,基本都是可以自動識別出的(為了規範,還是提倡大家不要偷懶)

    但在一些特殊情況,例如函式中的返回值、傳入引數的型別等這些都可由我們認為規定。

    :never和:void都是沒有返回值的意思,前者代表無法執行結束(死迴圈等),後者就純代表無返回

  (2)陣列和物件資料型別規範

    在函式中對物件資料型別進行規範:   add({one ,two} : {one : number ,two : number} )   【稍顯麻煩】

    陣列資料型別規範:  arr: (number  | string)[ ]  = [...]   【代表資料內部可以是number或者string,當然這種或者的寫法在其他地方也可以使用】

    陣列內帶物件:  

const girl:{name: string,age: number}[]= [....]

    簡易寫法:將其一寫在型別規範的位置上即可

      類型別名:  type name  = {name : string, age: number}            可以單個的資料

      類物件:  class name  = {name : string;age: number}   

      介面物件: interface  name  = {name : string;age: number}       只能是一個物件

    物件一些特殊寫法:

      可選值:  key ?:  型別

      任意屬性: [propname: string]:any;

  (3)類的使用與繼承

    在上文中我們有些地方用到過類,這裡會稍微詳細的介紹有關ts中類的知識

    1.資料方法私密度:共有三個限定的值,public(公開,無論類內部、外部都可以獲取到)、private(只有在類的內部才能獲取到)、protected(同樣只有在類的內部可以獲取到,但在繼承的類也可以獲取到)

      其實還有另兩個修飾詞:static(用於修飾方法,不用例項化類即可呼叫)

                 readonly(只讀,不可修改)  

    2.繼承extends:class  A {},  class B entends A{}即為B繼承於A,B擁有A身上的一切屬性和方法

    3.建構函式:簡單來說就是在生成類的物件(new)時,強制要求為生成的物件的某些屬性賦值,不寫建構函式系統會預設構造一個空的【java中是這樣,這裡不知道是不是,不過不影響】

     寫法:  constructor( name : string){   this.name =name  }

     在繼承中的建構函式:     constructor(public age: number){   super( 'jspang ')   }              即使用super呼叫父類的建構函式

    4.對於private的資料,我們想要在類的外部修改怎麼辦呢?

     getter:get age(){....}        外部獲取

     setter:  set age(){....}         外部修改

    5.列舉資料型別    enum  States = {name,age,....} 即此時的States.name = 0(States[0] = 0),預設從0開始計數,想要從其他資料計數可以自行對name賦值

    6.ts配置檔案tsconfig.json(vscode終端下執行 tsc --init即可生成)【命令較多,主要說明使用較多的】

      51行    "removeComments": true,   去掉註釋

      無        "include":[ .. . . ]       

         "files":[... .. ]               需要編譯的檔案,可以使用萬用字元

      無        "exclude":[ .. . . ]       不需要編譯的檔案,可以使用萬用字元

      77行     "strict": true,             嚴格模式

      78行      "noImplicitAny": false,    註解型別為any時不需要標註

      79行     "strictNullChecks": true,    不允許有null值出現

      28行      "rootDir": "./",              需要編譯的檔案所在位置

      50行       "outDir": "./",               編譯好的檔案存放位置

      48行       "sourceMap": true,      開啟原始碼到編譯後代碼的對映,方便查錯。

      86行      "noUnusedLocals": true,          未使用的變數不編譯

    7.泛型<T>

      即在定義函式時尚未考慮好使用什麼資料型別或程式碼需要複用但資料型別不同時使用

      寫法:  function join<T>(first: T,second: T) { ... .. } ;                   jion<number>(1,2)

    8.其他,尚未學到,如有需要請聯絡本人新增!