- 类型别名,使用 type 关键字
function sum(x: number, y: number): number {
return x + y
}
const sum2: (x: number, y: number) => number = sum;
上面 sum2 函数类型定义很麻烦,可以使用类型别名:
type PlusType = (x: number, y: number) => number;
function sum(x: number, y: number): number {
return x + y
}
const sum2: PlusType = sum;
类型别名,最常用的是使用联合类型
type NameResolver = () => string;
type NameOrResolver = string | NameResolver; // 联合类型
// 如果参数是字符串,则直接返回,如果是方法,则执行方法
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
}
}
另外一种方式写法:
function getLength(input: string | number) : number {
if((<string>input).length) {
return (<string>input).length
} else {
return input.toString().length
}
}