typeScript:认识typeScript及作用

认识typeScript

什么是TypeScript?

TypeScript能做什么?

为什么要用TypeScript?

什么时候用TypeScript?

  • TypeScript 核心:解决 JavaScript 编程中的类型安全问题

什么是类型安全?

什么是类型系统?

  • 无论我们通过什么语言去写程序,都避免不了出现一些错误,错误类型有许多种类:
  • 数据(类型)使用错误
  • 语法错误
  • 逻辑错误

类型错误

  • js是一个动态类型语言,变量的类型是动态,可变的,不确定,数据的类型是在运行过程中随时可变的,那么我们就不能在运行之前对它进行检测了。

类型系统

静态类型语言

  • 就是把程序的变量存储的数据类型给固定下来(变量一旦声明,就不能改变存储的数据类型了),那么这个时候,我们的程序就可以根据这个特性,来检测你在程序使用这个变量的时候有没有用对。
  • 类型标注
    • 给变量声明(标注)类型
  • 类型检测
    • 依据类型标注进行检测

额外的一个好处

  • 编译器(类型检测系统)既然能检测出来错误的使用了某种类型的数据,那么它是不是也可以做智能类型提示系统呢?
  • 比如,这个类型是否有这个属性,有这个方法,是不是类型标注出来的,然后编译器根据这个标注类型结构进行检测的,那么是否就可以提示这个类型结构了

环境搭建

  • TypeScript 编写的程序并不能直接通过浏览器运行,我们需要先通过 TypeScript 编译器把TypeScript 代码编译成 JavaScript 代码
  • TypeScript 的编译器是基于 Node.js 的,所以我们需要确保安装了Node.js

安装 TypeScript 编译器

  • 通过 NPM 包管理工具安装 TypeScript 编译器
    npm i -g typescript
  • 安装完成以后,我们可以通过命令 tsc 来调用编译器
# 查看当前 tsc 编译器版本
tsc -v

编写代码

  • TypeScript 文件
// ./src/hello.ts 
let str: string = '小陈';
  • 默认情况下, TypeScript 的文件的后缀为 .ts TypeScript 代码

编译执行

  • 使用我们安装的 TypeScript 编译器 tsc 对 .ts 文件进行编译
tsc ./src/hello.ts
  • 默认情况下会在当前文件所在目录下生成同名的 js 文件

其他的编译选项

  • 编译命令 tsc 支持许多编译选项,这里我先来了解几个比较常用的

–outDir

  • 指定编译文件输出目录
tsc --outDir ./dist ./src/hello.ts

–target

  • 指定编译的代码版本目标,默认为 ES3
tsc --outDir ./dist --target ES6 ./src/hello.ts

–watch

  • 在监听模式下运行,当文件发生改变的时候自动编译
tsc --outDir ./dist --target ES6 --watch ./src/hello.ts
  • 通过上面几个例子,我们基本可以了解 tsc 的使用了,但是大家应该也发现了,如果每次编译都输入这,么一大堆的选项其实是很繁琐的,好在TypeScript 编译为我们提供了一个更加强大且方便的方式,编译配置文件: tsconfig.json 我们可以把上面的编译选项保存到这个配置文件中

编译配置文件

  • 我们可以把编译的一些选项保存在一个指定的 json 文件中,默认情况下 tsc 命令运行的时候会自动去加载运行命令所在的目录下的 tsconfig.json 文件,配置文件格式如下:
{ 
	"compilerOptions": { 
		"outDir": "./dist", 
		"target": "ES2015", 
		"watch": true, 
	}, 
	// ** : 所有目录(包括子目录) 
	// * : 所有文件,也可以指定类型 *.ts 
	"include": ["./src/**/*"] 
}
  • 有了单独的配置文件,我们就可以直接运行:
tsc

指定加载的配置文件

  • 使用 --project 或 -p 指定配置文件目录,会默认加载该目录下的 tsconfig.json 文件
tsc -p ./configs
  • 也可以指定某个具体的配置文件
tsc -p ./configs/ts.json
上一篇:mdtest/go-ycsb测试工具使用


下一篇:C# 是 TypeScript 的最佳替补?