typeScript进阶

类型别名

类型别名用来给一个类型起个新名字

1
2
3
4
5
6
7
8
9
10
type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}

typeScript理论

什么是类型推论

以下代码虽然没有指定类型,但是会在编译的时候报错:

1
2
3
let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
// index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.

事实上,它等价于:

1
2
3
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
// index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.

typeScript基础

定义变量限制类型

1
2
3
4
5
6
7
8
9
let isDone: boolean = false;
let decLiteral: number = 6
let sentence: string = `Hello, my name is ${myName}`
let myFavoriteNumber: any = 'seven'; // 如果是 any 类型,则允许被赋值为任意类型
let myFavoriteNumber: string | number; // 联合类型(Union Types)表示取值可以为多种类型中的一种
let fibonacci: number[] = [1, 1, 2, 3, 5]; // 最简单的方法是使用「类型 + 方括号」来表示数组
let fibonacci: (number | string)[] = [1, '1', 2, 3, 5]; // 添加多个类型
let fibonacci: Array<number> = [1, 1, 2, 3, 5]; // 数组泛型
let list: any[] = ['xcatliu', 25, { website: 'http://xcatliu.com' }]; // 一个比较常见的做法是,用 any 表示数组中允许出现任意类型
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×