Typescript 類型推論

說明:基於已經有必定基礎了,接下來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;
複製代碼

本次代碼 Github

你能夠...

上一篇:Typescript 進階類型

下一篇:Typescript 聯合類型

目錄:Typescript 小書之入門篇

相關文章
相關標籤/搜索