Typescript 通过 type关键字来做别名,结合联合类型能够更加灵活地使用;另外提供类型断言,其语法是:<类型>值 或者 值 as 类型;类型断言并不是类型转换,是在已知多个类型的情况下我们把它断言的更加具体一些,所以类型断言是不能够断言联合类型中没有的类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// 通过type关键字 做别名
type PlusType = (x: number, y: number) => number

function sum(x: number, y: number): number {
return x + y
}

const sum2: PlusType = sum

// 给函数或者联合类型做别名
type NameResolve = () => string
type NameOrResolver = string | NameResolve

function getName(n: NameOrResolver): string{
if(typeof n === 'string'){
return n
}else {
return n()
}
}


// 类型断言
// 不能够断言联合类型中没有的类型
function getLength(input: string|number): number{
// const str = input as String
// if(str.length){
// return str.length
// }else{
// const number = input as Number
// return number.toString().length
// }

/* 更加简单的写法 */
if((<string>input).length){
return (<string>input).length
}else{
return input.toString().length
}
}