Skip to content

在正式学习TypeScript之前,让我们先来了解一下TypeScript的基本概念。

类型声明

typescript最常见的用法就是为变量、参数、返回值等添加类型声明。写法是在变量名后面加上冒号和类型名,例如:

typescript
let count: number;

function add(a: number, b: number): number {
  return a + b;
}

如果变量的值与声明的类型不一致,TypeScript 就会报错。

typescript
let count: number;
count = '10'; 
// Error: Type 'string' is not assignable to type 'number'.

类型推断

简介

很多情况下,类型声明不是必需的。TypeScript 会尽可能自动推断代码中的类型。例如:

typescript
let count = 10 // 自动推断count的类型为number

let arr = [1, 2, 3] // 自动推断arr的类型为number[]

let add = (a: number, b: number) => a + b // 自动推断add的返回值类型为number

这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时。如果无法推断,TypeScript 会默认为 any 类型。

最佳通用类型

当需要从几个表达式中推断类型时候,会使用这些表达式的类型来推断出一个最合适的通用类型。例如:

typescript
let x = [0, 1, null] // 推断为 (number | null)[]

TS会在推断的时候给出一个兼容所有类型的通用类型。

上下文类型

TypeScript 会根据代码上下文推断类型。例如:

typescript
window.onmousedown = function(mouseEvent) {
  console.log(mouseEvent.button) // 0
}

TypeScript 编译器 —— tsc

我们知道,JavaScript 的运行环境(浏览器和 Node.js)是不认识 TypeScript 代码的,所以,TypeScript 必须先转为 JavaScript 代码,这个代码转换的过程就叫做 “编译”(compile)。

关于TypeScript 的编译器 tsc的具体使用方法,可以参照官方文档 - TypeScript 编译器 —— tsc,这里不再赘述。

实际上,在大多数情况下,我们并不需要手动编译 TypeScript 代码,因为开发工具(如 VS Code、WebStorm 等)都内置了 TypeScript 编译器,可以自动完成编译工作。

需要重点关注的是 tsc的配置文件 tsconfig.json,它可以帮助我们配置 TypeScript 编译器的行为,例如指定编译目标、输出目录、编译选项等。

TypeScript Playground

官网的在线编译页面TypeScript Playground,支持完整的 IDE 支持,可以自动语法提示。并且支持把代码片段导出成 URL 或 Markdown格式链接,非常适合学习使用。

ts-playground