1. 什么是TypeScript?

  • TypeScript是添加了类型系统的JavaScript,适用于任何规模的项目。
  • TypeScript是一门静态类型、弱类型语言。
  • TypeScript完全兼容JavaScript,它不会修改JavaScript运行时的特性。
  • TypeScript可以编译为JavaScript,然后运行在浏览器、Node.js等任何能运行JavaScript的环境中。
  • TypeScript可以和JavaScript共存,老旧项目可渐进式前移到TypeScript中。
  • TypeScript增强了编辑器(IDE)的功能,提供代码补全、接口提示、跳转到定义、代码重构等能力。
  • TypeScript与标准同步发展,符合最新的ECMAScript标准(stage3)。

    2. Hello TypeScript

    1. 新建一个hello.ts文件 ```typescript function sayHello(person: string) { return ‘hello, ‘ + person; }

let user = ‘LelandACM’; console.log(sayHello(user));

  1. b. 执行 tsc hello.ts
  2. ```bash
  3. tsc hello.ts
  1. c. 系统自动生成 hello.js文件
  1. function sayHello(person) {
  2. return 'hello, ' + person;
  3. }
  4. var user = 'LelandACM';
  5. console.log(sayHello(user));
  1. d. 类型检查判断: TypeScript只会在编译时对类型进行静态检查,如果有发现错误,编译时则会报错,在运行时和JavaScript文件一样,不会对类型进行检查,运行时类型检查需要手动判断。
  1. function sayHello(person) {
  2. //手动进行类型检查
  3. if (typeof person === 'string') {
  4. return 'hello, ' + person;
  5. }
  6. else {
  7. throw new Error('person is not a string');
  8. }
  9. }
  10. var user = [1, 2, 3];
  11. console.log(sayHello(user));
  1. e. 编译上述代码,编辑器会提示以下错误
  1. hello.ts:11:22 - error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.
  1. f. 但是还是会生成js文件代码
  1. function sayHello(person: string) {
  2. //手动进行类型检查
  3. if (typeof person === 'string') {
  4. return 'hello, ' + person;
  5. } else {
  6. throw new Error('person is not a string');
  7. }
  8. }
  9. let user = [1, 2, 3];
  10. console.log(sayHello(user));
  1. g. 结论:TypeScript为静态类型,弱类型检查语言,在ts代码编译出错时仍然会生成编译结果,所以减少代码bug,在必要时做手动类型检查。