>[success] # 搭建
~~~
1.創建好項目文件夾后輸入指令 -- 'npm init -y'
1.1 指令說明快速初始一個'package.json' 文件
2.安裝開發ts依賴 'typescript'
--- 指令:'npm install typescript -D'
3.生成'tsconfig.json'
--- 指令:'tsc --init' (會初始化一個'tsconfig.json') 的配置文件
4.編譯ts轉譯成js -- 'tsc 文件名' 會將指定的ts文件轉為js,當然你也可以在'tsconfig.json'配置,'outDir'
和'rootDir'來專門指定入口和出口這樣只需要執行'tsc' 即可,如果想實時監控到更改文件打包使用'tsc -w'
~~~
>[info] ## 關于tsconfig.json 說明
[參考文章](https://segmentfault.com/a/1190000021749847)
~~~
這里舉幾個個人認為比較重要的屬性說明一下
1."target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
ts編譯成es 版本聲明,當前配置的意思就是將ts代碼最后會全部編譯成es5格式的代碼
2."outDir": "dist", /* Redirect output structure to the directory. */ 編譯結果輸出的文件夾
3."rootDir": "src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
編譯代碼的位置,理解成入口
4."sourceMap": true,/* Generates corresponding '.map' file. */
ts代碼映射
5."lib": [], /* Specify library files to be included in the compilation. */指定要包含在編譯中的庫文件。
~~~
>[danger] ##### 對lib 一個解釋
~~~
1.ts都會有標準庫的聲明,可以理解成是一個對內置對象所對應的聲明,下面的案例如果在tsconfig.json 配置
中target配置成es5,我們原本的想法就是ts 最后生成的js 文件都是按照es5的形式編譯的好,ts文件就會報錯
讓我們將target 換成'es2015' 也就是es6 這和我們的初衷不符
2.產生的原因,可以在Promise上右鍵,可以發現圖二的效果,當我們轉到后,會到一個文件叫'lib.es5.d.ts',
很明顯Promise 是不會出現在es5 的聲明文件中,但是我們又想使用可以看圖三 在'node_modules\typescript\lib'
ts 為我們提供的個個版本的js聲明文件
3.如何在讓整體代碼最后編譯結果依舊是'es5' 且最后在不改變target 的前提下依舊使用其他版本的聲明文件,
此時就可以在'lib'中定義,同理使用了一些dom 特帶的api,也是lib聲明 -- ' "lib": ["es2015", "DOM"]'
~~~

* 圖二

* 圖三

>[danger] ##### 使用中文的錯誤提示
~~~
1.npm tsc --locale zh-CN
~~~
- TypeSprict -- 了解
- TS-- 搭建(一)webpack版本
- TS -- 搭建(二)直接使用
- TS -- 基本類型
- ts -- 類型推導和字面量類型
- ts -- 類型擴展和類型縮小
- ts -- any場景
- ts -- 使用unknown 還是 any
- ts -- any/never/unknown
- ts -- 斷言
- ts -- 類型大小寫疑惑
- ts -- 數組類型 [] 還是泛型疑惑
- TS -- 枚舉
- 外部枚舉
- TS -- 函數
- ts -- 重載作用
- ts -- 05 this is
- 解構
- TS -- 接口
- 繞過接口的多余參數檢查
- Interface 與 Type 的區別
- TS -- 類
- ts -- 類作為類型
- TS -- 交叉和聯合 類型
- ts -- 交叉類型
- ts -- 聯合類型
- ts -- 交叉和聯合優先級
- ts -- 類型縮減
- TS -- 什么是泛型
- ts -- 泛型函數表達式/函數別名/接口
- ts -- 泛型類
- ts -- extends 泛型約束
- ts -- 泛型new
- ts -- Ts的泛型
- TS -- 縮小類型詳解類型守衛
- TS -- 類型兼容性
- TS -- 命名空間與模塊化
- ts -- 模塊化
- ts -- 命名空間
- TS -- 工具方法
- Record -- 一組屬性 K(類型 T)
- Exclude -- 從聯合類型中去除指定的類
- Extract -- 聯合類型交集
- NonNullable -- 從聯合類型中去除 null 或者 undefined
- Partial -- 將所有屬性變為可選
- Required -- 所有屬性變為必填
- Readonly -- 所有屬性只讀
- Pick -- 類型中選取出指定的鍵值
- Omit -- 去除指定的鍵值