数据类型
布尔值
let isDone: boolean = false;
数字
let a: number = 6;
字符串
let name: string = "simon";
Null 和 Undefined
let u: undefined = undefined;
let n: null = null;
默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
Object
let b:object = {name: 'simon'}
数组
TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:
let list: number[] = [1, 2, 3];
第二种方式是使用数组泛型,Array<元素类型>:
let list: Array<number> = [1, 2, 3];
元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
枚举
使用枚举类型可以为一组数值赋予友好的名字
enum Color {Red, Green, Blue}
默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。
enum Color {Red = 1, Green = 2, Blue = 4}
Any
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型
let list: any[] = [1, true, "free"];
Void
当一个函数没有返回值时,你通常会见到其返回值类型是 void:
function warnUser(): void {
console.log("This is my warning message");
}
never
never类型表示的是那些永不存在的值的类型。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
类型断言
通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
另一个为as语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
变量声明
抛弃var的声明方式,改用let和const
解构
数组解构
let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2
对象解构
let o = {
a: "foo",
b: 12,
c: "bar"
};
let { a, b } = o;
// a的值foo
// b的值12
展开
let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5]; // [0, 1, 2, 3, 4, 5]
对象展开 这就意味着出现在展开对象后面的属性会覆盖前面的属性
let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" }; // { food: "rich", price: "$$", ambiance: "noisy" }