記錄對TypeScript的初步瞭解,以期在實際項目中對是否使用TypeScript有較爲科學的考量。
大綱:javascript
知識補充:html
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
TypeScript = Type + 基於類的面向對象編程 + ES新特性支持vue
可選的靜態類型java
// 聲明參數類型爲 string function greet (msg: string) { console.log("Say: " + msg); } greet("Hello TypeScript!"); greet(1900); // 報錯:Argument of type '1900' is not assignable to parameter of type 'string' // string 改成 string|number 可運行 // string 改成 any 即不指定類型,則可運行
PS: 類型規範:number, string, boolean, object
, 而非Number, String, Boolean, Object
git
提供最新ES特性:
提供最新的和不斷髮展的JavaScript特性,包括那些來自ECMAScript和將來提案中的特性,好比異步功能和Decorators, 以幫助創建健壯的組件。es6
來歷:github
微軟開源的編程語言,2013年6月19日,發佈了正式版TypeScript 0.9。typescript
演示:typescript-test, typescript-vue-tutorial
npm
更多起步例子:http://www.typescriptlang.org...編程
在TypeScript中使用第三方庫,須要獲取其聲明文件,告訴TS這個庫是存在的以及如何獲取,TypeScript 2.0以上版本,獲取聲明文件只需使用npm。通常npm包會包含其聲明文件,這種狀況不須要額外安裝,若沒有,則要安裝其聲明文件,大多數狀況下,類型聲明包的名字老是與它們在npm上的包的名字相同,可是有@types/前綴。能夠在 https://aka.ms/types 查找你喜歡的庫。
聲明文件命名規則:.d.ts
用:
不用:
https://www.zhihu.com/questio...
https://www.tslang.cn/docs/ha...
JavaScript(1996) -> ECMAScript 1.0(1997) -> ECMAScript 3.0(1999.12) -> ECMAScript 5.0(2009.12) -> ECMAScript 6(2015.06)
ES6 從開始制定到最後發佈,整整用了 15 年。
ES6 與 ECMAScript 2015 的關係
附:http://es6.ruanyifeng.com/#do...
Chrome 和 Safari 對 ES6 的支持度,目前均是92%
微信內置瀏覽器對ES6的支持度是90%
轉碼器babel: 轉換新的JavaScript句法(Syntax), 好比() => {}
,不轉換新的API,好比Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise
等全局對象,以及一些定義在全局對象上的方法(好比Object.assign)都不會轉碼,須要使用babel-polyfill
如何共用變量?
普遍使用的兩種模塊化系統:CommonJS(CJS), ECMAScript Modules(ESM)
原文:ES Modules: A cartoon deep-dive