根據 官網的定義:
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open source.
TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor.
TypeScript code converts to JavaScript, which runs anywhere JavaScript runs: In a browser, on Node.js or Deno and in your apps.
TypeScript understands JavaScript and uses type inference to give you great tooling without additional code.
圖片來源:Angular TypeScript Vs ES6 Vs ES5
超集(Superset) 是指包含或涵蓋另一個集合的集合。如果集合 A 中的所有元素也是集合 B 中的元素,那麼集合 A 就是集合 B 的超集。
以程式語言為例,如果 A 語言為 B 語言的超集,意思就是 A 語言包含了 B 語言的所有語法和功能,並且還可能擴展了其他額外的語法和功能。
在這個情況下,A 語言就稱為「超集」,而 B 語言則被稱為「子集」。
Javascript 是一個弱型別語言 (Loosely typed language),在 JS 宣告變數時不需要特別定義它的型別,因此我們很難一眼看出函式的參數和變數是什麼型別,可能會因為傳入了錯誤型別的資料而導致程式碼出錯。TypeScript 的出現就是為了解決這個問題。
TypeScript 具備了以下的特性:
TypeScript 是靜態型別系統的程式語言,在編譯時做型別檢查;
Javascript 是動態型別系統的程式語言,在執行時做型別檢查。
.js
檔案可以直接重新命名為 .ts
在全域環境安裝 TypeScript:
在全域性環境下安裝 Typescript ,之後就可以在任何地方執行 tsc
命令。
建立 Typescript 編譯器的設定檔 tsconfig.json
:
編譯一個 TypeScript 檔案:
或是直接編譯同一個檔案資料夾下所有 Typescript 檔案:
TypeScript 編譯器就會幫我們自動掃描所有 .ts
結尾的檔案,並且編譯成 JS 檔案。
使用 TypeScript 編寫的檔案以 .ts
為字尾;
用 TypeScript 編寫 React 時,以 .tsx
為字尾。
建立 index.ts
檔案,並撰寫一些 TypeScript 程式碼:
編譯檔案:
這時候會產生一個編譯好的檔案 index.js
:
左邊為原本的 index.ts
,右邊為編譯後的 index.js
:
:
指定參數 something
的型別為 string
(:
的前後有沒有空格都可以)再把 message
改成陣列試試看:
這時候可以看到編輯器中的錯誤提示以及編譯後出現的錯誤訊息:
儘管 Typescript 在編譯的時候報錯,仍然可以產生 JS 程式碼:
如果要在報錯的時候終止 JS 檔案的產生,可以在 tsconfig.json
中配置 noEmitOnError
即可。關於 tsconfig.json
,請參閱官方手冊。