Typescript的类型守卫,类型转换,自定义守卫及其应用场景
// 定义一个简单的类型守卫函数
function isString(value: any): value is string {
return typeof value === 'string';
}
// 使用自定义的类型守卫
function printId(id: string | number) {
if (isString(id)) {
console.log(`ID is a string: ${id}`);
} else {
console.log(`ID is a number: ${id}`);
}
}
// 测试类型守卫函数
printId('my-identifier'); // 输出: ID is a string: my-identifier
printId(123); // 输出: ID is a number: 123
这段代码首先定义了一个isString
函数,它使用TypeScript的is
关键字来创建一个自定义的类型守卫。这个守卫函数检查一个值是否是字符串类型。然后,我们定义了一个printId
函数,它根据传入参数的实际类型来输出不同的信息。这个例子展示了类型守卫在类型检查和类型转换中的应用,以及如何根据特定的场景定义和使用这些守卫。
评论已关闭