TypeScript 是什么?
TypeScript 是 JavaScript 的超集,在 JavaScript 的基础之上,为 JavaScript 添加了类型支持。
为什么要有 TypeScript?
JavaScript 是一门弱类型语言,其代码中的错误绝大多数是类型错误(Uncaught TypeError)。这些经常出现的错误,严重影响了开发效率。
从编程语言的动静来区分,TypeScript 属于静态类型的编程语言,JavaScript 属于动态类型的编程语言。
- 静态类型:编译期做类型检查
- 动态类型:执行期做类型检查
因此:
- 对于 JavaScript 来说,需要等到代码执行的时候才能发现错误(晚);
- 对于 TypeScript 来说,在代码编译的时候就能发现错误(早),配合开发工具,可以提前到在编写代码的时候就能发现代码中的错误(更早)。
另外,对于 TypeScript 编辑器的代码提示更丰富,开发体验更好。
类型注解
1 | let age: number = 18 |
形如 : number
这部分代码叫类型注解,作用是为变量添加类型约束。浏览器据此可以进行报错和代码提示。
- JavaScript 已有类型:
- 原始类型:number/string/boolean/null/undefined
- 复杂类型:数组、对象、方法
- TypeScript 新增类型:联合、自定义、接口、元组、字面量、枚举、void 等
1 | let name: string = '' |
联合类型
1 | // 联合类型 |
类型别名
1 | type ArrType = (number | string)[] |
函数类型
1 | function add1(a: number, b: number): number { |
函数的类型别名
函数的类型别名通常是给箭头函数 / 函数表达式使用,不会给函数声明使用
1 | type FnType = (a: number, b: number) => number |
void 类型
如果函数不写 return,默认返回值是 undefined,但是 TypeScript 类型推断为 void。在 TypeScript 中写 : undefined
的意思是必须返回一个 undefined。TypeScript 提供了一个返回值类型 : void
意思就是没有返回值。
1 | const show = (content: string): void => { |
可选参数
- 在 JavaScript 中定义了形参,调用函数时可以不传实参
- 在 TypeScript 中定义了形参,调用函数时必须传入实参,否则报错
如果要实现可选参数,加一个 ?
,可选参数只能放在参数列表的最后。
1 | const print = (name?: string, gender?: string) => { |