typeScript入門基礎介紹
TS 的特點:
- 始於
javaScript
歸於 javaScript 。 - 強大的類型系統。
- 先進的 javaScript 。
- 適合開發大型項目,編譯成純 js 代碼,js 可以運行在任何瀏覽器上。
typeScript 是區分大小寫的一門語言,本篇文章主要帶你瞭解 ts 的安裝,環境配置,以及簡單的入門。
一、安裝 TS
使用之前需要安裝:
npm install -g typescript
安裝完成之後,使用 tsc -v 檢查安裝之後的版本。
第一個 ts 文件:01.ts,代碼如下:
(()=>{ function show(msg){ return "字符串:"+msg } let str = "前端" console.log(show(str)) })()
通過 script
引入 html 文件
<script src="./01.ts"></script>
頁面正常運行,因為 ts 能夠支持 js 語法,所以文件內直接引入使用是沒問題的,除此之外,還可以使用 node 命令運行該文件,也是可以正常執行的。
如果此時,在 ts 文件內加入 ts 語法:
// 添加類型支持 (()=>{ function show(msg:string){ //添加 string 的意義在於傳入的 msg值隻能是字符串,不可以是其他類型 return "字符串:"+msg } let str = "前端" console.log(show(str)) })()
此時瀏覽器運行時,會報錯,無法繼續執行。
此時就需要將 ts 文件編譯為 js 文件,打開命令行工具,運行:
tsc 01.ts
運行後會自動生成一個 01.js 文件,查看js代碼內容如下:
function show(msg) { return "字符串:" + msg; } (function () { var str = "前端"; console.log(show(str)); })();
總結:
- ts 文件內直接輸入 js 文件,在 html 文件引入 ts 文件,在瀏覽器內是可以直接運行的。
- ts 文件內如果有 ts 語法代碼,若在 html 文件內引入 ts 文件,直接在瀏覽器運行會報錯,此時需要先編譯為 js 文件。
- 在 ts 文件函數中的形參,如果使用瞭某個類型進行修飾,那麼在最終編譯的 js 文件中是沒有該類型的。
- ts 內地 let 修飾符,編譯後的 js 文件內變成瞭 var 。
二、Vscode 自動編譯 ts
新建一個項目目錄,當前目錄下打開命令行工具,執行
tsc --init
自動生成 tsconfig.json 文件,代碼如下:
{ "compilerOptions": { "target": "es2016", "module": "commonjs", "outDir": "./js", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true } }
註:
outDir 表示的是 ts 文件編譯之後生成 js 文件的存放目錄。如果屬性值之後的文件夾不存在時,就會自動創建。
strict 表示是嚴格模式。
新建 index.ts 文件,代碼如下:
(() => { function showStr(str:string) { return str } let a: string = "前端人" // 調用函數 console.log("a",showStr(a)); })()
類型註解:函數地形參後加修飾符,用來限制傳入參數的類型,string 表示隻能為字符串類型。
在命令行運行
tsc -w //或 tsc -watch
自動生成 js 文件夾,包括 index.js 文件。運行該命令後,隻要 ts 文件發生改變,就會自動編譯。
一切運行正常,沒有任何錯誤。
如果調用函數的參數傳為數值時:
console.log(showStr(123));
此時編輯器內報錯:類型“number”的參數不能賦給類型“string”的參數。
ts 能夠智能提示問題,是因為 ts 提供瞭靜態代碼分析,可以分析代碼結構和提供的類型註解。
但是 tsc 編譯的時候,雖然會提示錯誤,但它依舊會編譯為 js 文件,js 在執行的時候不會報錯,因為 js 是弱類型語言。
三、入門 TS
基礎數據類型
- 為佈爾值類型。如:
let isDone: boolean = false;
- number 為數值類型,ts 能夠支持二、八、十、十六進制數據。如:let decLiteral: number = 6;
- string 為字符串類型。如:
let name: string = "bob";
- 表示數組類型。數組名後加元素類型[] 加 數組值。如:
let list: number[] = [1, 2, 3];
- 元組類型。如:
let arr:[string,number,boolean] = ['str',1,true]
- 枚舉,為一組數值賦予友好名字。如:
enum Color { red, green, blue }
- 任意類型,有時不確定傳入的值是什麼類型,就可以使用 any 類型。如:
let notSure:any = 1
- 空值,與 any 正好相反,表示沒有任何類型。 如:
function show():void { }
null
和undefined
- never 類型,表示永不存在的值。
function error(message: string): never { throw new Error(message); }
接口
接口簡單點講就是一種約束。在 ts 裡,接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約。
TypeScript
中的接口是一個非常靈活的概念,除瞭可用於對類的一部分行為進行抽象以外,也常用於對「對象的形狀(Shape)」進行描述。
使用形式:
(() => { //定義一個接口 interface Person{ firstName:string,//添加類型限定 lastName:string } function showFullName(person:Person) { // 添加類型限定之後,內部會自動提示接口內的字段 return person.firstName + '_' + person.lastName } const p = { firstName: "Hello", lastName: "World" } console.log("姓名",showFullName(p)); })()
如果把 p 中的 firstName 註釋掉,就會報錯,提示:
在本實例中,接口的意義就是限定傳入 showFullName 函數內的數據屬性的限制。
接口優點:自動檢測傳入的數據是否符合接口規范,如果不符合則會報錯。
類
Typescript類介紹
傳統的 JavaScript 的程序使用函數和基於原型的繼承來創建可重用的組件,但對於熟悉使用面向對象方式的程序員來講就有些棘手,因為他們用的是基於類的繼承並且對象是由類構建出來從 ECMAScript 2015,也就是 ECMAScript 6 開始,JavaScript 程序員將能夠使用基於類的面向對象的方式。使用 TypeScript
,我們允許開發者現在就使用這些特性,並且編譯後的 JavaScript 可以在所有主流瀏覽器和平臺上運行,而不需要等到下個JavaScript的版本。
ts 的類隻是一個語法糖,本質還是 js 函數實現的。
使用示例:
(() => { //定義一個接口 interface Person{ firstName: string, lastName:string } //定義一個類 class Personal { //定義公共的字段屬性 firstName: string lastName: string fullName: string // 構造函數 constructor(firstName: string,lastName:string) { //更新屬性數據 this.firstName = firstName this.lastName = lastName this.fullName = this.firstName + this.lastName } } const p = new Personal('你','好') function showFullName(person: Person) { return person.firstName + person.lastName } console.log("p",showFullName(p)); })()
到此這篇關於 typeScript入門基礎介紹的文章就介紹到這瞭,更多相關 typeScript內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- typescript快速上手的基礎知識篇
- TypeScript定義接口(interface)案例教程
- TypeScript聲明文件的語法與場景詳解
- TypeScript保姆級基礎教程
- 詳解JavaScript私有類字段和TypeScript私有修飾符