在正式学习TypeScript之前,让我们先来了解一下TypeScript的基本概念。
类型声明
typescript最常见的用法就是为变量、参数、返回值等添加类型声明。写法是在变量名后面加上冒号和类型名,例如:
let count: number;
function add(a: number, b: number): number {
return a + b;
}
如果变量的值与声明的类型不一致,TypeScript 就会报错。
let count: number;
count = '10';
// Error: Type 'string' is not assignable to type 'number'.
类型推断
简介
很多情况下,类型声明不是必需的。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
类型。
最佳通用类型
当需要从几个表达式中推断类型时候,会使用这些表达式的类型来推断出一个最合适的通用类型。例如:
let x = [0, 1, null] // 推断为 (number | null)[]
TS会在推断的时候给出一个兼容所有类型的通用类型。
上下文类型
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格式链接,非常适合学习使用。