JavaScript语言特点
- 在代码中使用不存在的变量;
- 把一个不确定的类型当做一个确定的类型去处理;(Number类型的变量使用了Array类型的方法);
- 再使用null和undefined的成员;
JavaScript原罪:
- js语言本身的特性,决定了该语言无法使用大型的复杂的项目;
- 弱类型:变量的类型可以随意变更;
- 解释型语言:只能在运行的时候才知道错误,编写的时候不会出现任何错误(语法全部正确);
TypeScript语言特点
TypeScript简介
TypeScript是JavaScript的一个超集,支持ES6标准。TypeScript是由微软开发并开源的编程语言,TypeScript设计目标是开发大型应用,它可以编译成纯JavaScript,可以在任何浏览器运行。TS在语法层面上更有约束力。
- 超集(例如:整数是正整数的超集);
- 类型系统:对代码所有的标识符(变量、函数、参数、返回值)进行类型检查;
- 可选的 类型检查是可选的
安装TypeScript
npm i -g typescript
将TypeScript安装到全局,以便可以随时使用tsc将ts代码编译为JS代码。
- 新建一个index.ts文件
let say: string = "Hello Ts"
再终端运行tsc index.ts 运行自后会出现一个index.js文件,该文件就是编译后的文件。此时再次打开ts文件会报错:“无法重新声明块范围变量say”
因为默认情况下TypeScript会做出下面几种假设:
- 默认当前运行环境是浏览器环境;
- 如果带阿米中没有使用模块化语句(import export)便认为此环境是全局进行的,他认为全局中的index.js已经有say变量,所以不能再用let声明一个say变量;
- 编译的目标代码是ES3(最大兼容)
所以需要将上述的默认行为全部清除,有两种方式:
- 使用ts命令的时候,加上选项参数;
- 使用ts配置文件,来更改编译选项;
TS的配置文件
在终端中运行tsc -init 项目中会自动生成一份名为tsconfig.json的文件,该文件就是TS的配置文件
{
"compilerOption": { // 编译选项
"target": "es2016", //编译的结果是什么标准 默认值是es3
"module": "commonjs", //配置编译目标使用的模块化标准
"lib": ["es2016", "dom"...], // 默认执行环境
"outDir": "./dist", // 指定编译后的结果放在哪里
"strictNullChecks": "true", // 更加严格的类型检查,不可以将null和undefined赋值给其他类型
},
"include": ["./src"], // 编译的根目录 默认的根目录就是src
// "files": ["./src/index.ts"], // 只编译某个文件而不是整个文件夹里的文件
}
使用配置文件之后,执行tsc编译时,后面可以不跟文件吗。如果跟上文件名会忽略配置文件,直接执行tsc即可。