[ts入门01]基本了解

447 阅读2分钟

为什么要学习ts?

可以减少bug

  • 发现过程:在tsc过程将ts转化为js过程中会提示变量不一致问题
  • ts转化的js:普通的js,只不过是已经通过了ts检查的js(没有变量问题的js)
  • 常见问题:
    • 变量个数不一致
    • 变量类型不正确
    • 变量只读属性
    • 函数输入输出变量类型不统一

未来趋势

各大框架已经开始使用ts(如果再不学,以后看源码是不是会更加费力了)

ts是什么?

是新语言吗? 不是,在js基础上加了强变量类型语法,增强js语法

本质是什么? js 的超集,主要提供类型系统和对 ES6 的支持

如何运作的?

  • 需要全局安装 typescript
  • 通过 typescript将ts文件转化为js文件,此过程可提前发现语法缺陷

缺点?

  • 学习成本,需要理解接口、泛型、类、枚举类型(
  • 短期会增加开发成本,要多写类型定义,对于需要长期维护的项目, ts能减少维护成本
  • 构建:集成到构建流程需要一些工作量
  • 三方库:可能和一些库结合的不是很完美

优点?

  • 提前发现类型相关BUG
  • 代码更加规范,减少维护成本
  • 增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等。
  • 代码细节:枚举类型,支持通过key获取value,也支持通过value获取key

基本了解

设计者,实现者:微软

发行时间:2012年10月1日

ts和js关系:

  • ts是js的扩展,也就是ts语法包含js
  • 任何现有js程序都是合法的ts程序,也就是.js 文件可直接重命名为 .ts
  • GitHub:github.com/microsoft/T…

安装

For the latest stable version:

sudo npm install -g typescript

npm install -g typescript@next

验证 tsc -v (@2020/3/27)

tsc -v

Version 3.8.3

执行

tsc test1_compile.ts

node test1_compile.js

观察发现 ts转换成js并没有自动类型转换代码,这是因为

  • 如果有错误,编译时就会报错
  • ts检查是静态的,非运行时检查
  • 注: ts编译时即使报错了,还是会生成编译结果

ts-to-js

当形参和实参类型不同时编辑器和命令行提示 ts-error-tip

// 这样不会报错
let num: number = undefined;
//  这样会报错
let u: void;
let num: number = u;
// Type 'void' is not assignable to type 'number'.