1.枚举类型
使用:
export enum DateType {
Date = 'date',
Week = 'week',
Month = 'month',
Year = 'year',
}
2.never类型
never类型表示的是那些永不存在的值的类型
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
3.类型断言
两种形式,一种是<>,一种是as
4.解构赋值
(1)数组:let [first, …rest] = [1, 2, 3, 4];
(2)对象:
let o = {
a: “foo”,
b: 12,
c: “bar”
};
let { a, b } = o;
(3)属性重命名:let { a: newName1, b: newName2 } = o;
令人困惑的是,这里的冒号不是指示类型的。 如果你想指定它的类型, 仍然需要在其后写上完整的模式。
let {a, b}: {a: string, b: number} = o;
5.可选属性、索引签名
SquareConfig带有上面定义的类型的color和width属性,并且还会带有任意数量的其它属性,那么我们可以这样定义它:
interface SquareConfig {
color?: string;
width?: number;
[propName: string]: any;
}
6.泛型
function identity<T>(arg: T): T {
return arg;
}