记录对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