1. 什么是TypeScript?
- TypeScript是添加了类型系统的JavaScript,适用于任何规模的项目。
- TypeScript是一门静态类型、弱类型语言。
- TypeScript完全兼容JavaScript,它不会修改JavaScript运行时的特性。
- TypeScript可以编译为JavaScript,然后运行在浏览器、Node.js等任何能运行JavaScript的环境中。
- TypeScript可以和JavaScript共存,老旧项目可渐进式前移到TypeScript中。
- TypeScript增强了编辑器(IDE)的功能,提供代码补全、接口提示、跳转到定义、代码重构等能力。
TypeScript与标准同步发展,符合最新的ECMAScript标准(stage3)。
2. Hello TypeScript
- 新建一个hello.ts文件 ```typescript function sayHello(person: string) { return ‘hello, ‘ + person; }
let user = ‘LelandACM’; console.log(sayHello(user));
b. 执行 tsc hello.ts
```bash
tsc hello.ts
c. 系统自动生成 hello.js文件
function sayHello(person) {
return 'hello, ' + person;
}
var user = 'LelandACM';
console.log(sayHello(user));
d. 类型检查判断: TypeScript只会在编译时对类型进行静态检查,如果有发现错误,编译时则会报错,在运行时和JavaScript文件一样,不会对类型进行检查,运行时类型检查需要手动判断。
function sayHello(person) {
//手动进行类型检查
if (typeof person === 'string') {
return 'hello, ' + person;
}
else {
throw new Error('person is not a string');
}
}
var user = [1, 2, 3];
console.log(sayHello(user));
e. 编译上述代码,编辑器会提示以下错误
hello.ts:11:22 - error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.
f. 但是还是会生成js文件代码
function sayHello(person: string) {
//手动进行类型检查
if (typeof person === 'string') {
return 'hello, ' + person;
} else {
throw new Error('person is not a string');
}
}
let user = [1, 2, 3];
console.log(sayHello(user));
g. 结论:TypeScript为静态类型,弱类型检查语言,在ts代码编译出错时仍然会生成编译结果,所以减少代码bug,在必要时做手动类型检查。