說明:基於已經有必定基礎了,接下來javascript
1.展現編譯錯誤的結果會根據狀況經過繼續截圖或貼在代碼的後面;java
2.本章節及以後章節會以版本號遞增方式來記錄學習過程,以前是時間(年-月-日)的方式;git
3.加點工程化的東西,這個會逐漸優化,便於將精力專一於所學習內容上;github
4.對於提升學習效率這塊,若是你有更好的思路或方法,還請在評論區分享下,幫助他人和我一塊兒進步;typescript
package.json
(notes 目錄下)npm init -y
複製代碼
// notes/package.json
{
"name": "notes",
"version": "0.0.4",
"description": "輔助學習typescript",
"main": "index.js",
"scripts": {
"build": "tsc --outDir $npm_package_version/build $npm_package_version/*.ts",
"watch": "tsc -w $npm_package_version/*.ts",
"createDir": "mkdir $npm_package_version"
},
"keywords": [],
"author": "ruizhengyun <ruizhengyun@gmail.com> (https://github.com/ruizhengyun)",
"license": "MIT"
}
複製代碼
version
遞增下便可;npm run createDir
來建立這個版本的示例文件夾;npm run build
能夠實時監聽當前版本目錄下的 *.ts
文件並將其編譯到當前版本 build
文件目錄下(這裏有個小問題就是以後新增文件不能監控到,你的重啓下服務);要是沒有明確的指定類型,那麼 TS 會推斷出一個類型,這是依照類型推論(Type Inference)的規則來的。npm
// inference.ts
let inference = 'ts';
inference = 18;
// 0.0.4/inference.ts:2:1 - error TS2322: Type '18' is not assignable to type 'string'.
// 2 inference = 18;
複製代碼
有人問了,這段代碼寫法上沒有任何問題啊?爲何有錯?json
很差意思,如今你在 TS 的世界裏,就得按照這裏的規則來。既然來學 TS,咱就得放下包袱(以往一些經驗)。bash
出現這問題的緣由在於TS 在變量沒有明確指定類型的狀況下會推測出一個類型(類型推論)。post
能夠經過下面這種方式來理解上面的寫法學習
// inference.ts
let inference: string = 'ts';
inference = 18;
// 0.0.4/inference.ts:2:1 - error TS2322: Type '18' is not assignable to type 'string'.
// 2 inference = 18;
複製代碼
剛剛在定義的時候就賦值了,那若是一開始就不定義。以前的經驗告訴咱們,類型是 any
,那後面賦值字符串,而後再賦值數字均可以咯。Have a try ~
// inference2.ts
let inference2;
inference2 = 'ts';
inference2 = 18;
複製代碼
編譯後
// build/inference2.js
var inference2;
inference2 = 'ts';
inference2 = 18;
複製代碼