定义
TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript。
主要提供了类型系统和对 ES6 的支持。
npm install -g typescript // 安装
tsc hello.ts // 编译
基础
原始数据类型
// 布尔值
let isDone: boolean = false;
let createdByNewBoolean: Boolean = new Boolean(1);
let createdByBoolean: boolean = Boolean(1);
// 数值
let decLiteral: number = 6;
// 字符串
let myName: string = 'Tom';
// 空值, 表示没有任何返回值
function alertName(): void {
alert('My name is Tom');
}
// Null 和 Undefined, undefined 和 null 是所有类型的子类型
let u: undefined = undefined;
let n: null = null;
任意值
任意值(Any)用来表示允许赋值为任意类型。
如果是一个普通类型,在赋值过程中改变类型是不被允许的。但如果是 any 类型,则允许被赋值为任意类型。
let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;
变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:
let something;
something = 'seven';
something = 7;
类型推论
TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。
let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
// 会报错,相当于
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
// 普通类型更改类型会报错
如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查。
let myFavoriteNumber;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
联合类型使用 | 分隔每个类型。
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
文档
官方文档
非官方中文版
TypeScript入门
github