目录
3. 结果处理。也是最有意思的步骤了。因为从这一步开始我们的变量的类型发生了变化。
1. 场景
function test_01(a:string,b:number):Error{
if(!a){
return new Error('a is not allow null');
}
return null; // 这里会报错的。因为 null无法赋值给Error。
}
const err= test_01('',0);
2. 解决方案
这样就不会报错了。但是返回的类型也就变成联合类型了
function test_01(a:string,b:number):Error|null{
if(!a){
return new Error('a is not allow null');
}
return null;
}
const err= test_01('',0);
此时的 err 也就不是单纯的Error了。这样该如何处理?毕竟是两个类型了。这里就要用到断言处理了。
3. 结果处理。也是最有意思的步骤了。因为从这一步开始我们的变量的类型发生了变化。
我们首先添加了一个if判断,因为有null类型,所以首先判断不是null那就是有错误呀。此时的err还是联合类型呢。但是if语句里面的err是什么类型呢?
明显变成了Error。是不是把Null给过滤了。估计有人会问了。如果我们把if语句变化一下。变成:
if(err===null){
console.log(err);
}
结果是不是就不一样了呢?是的。这时的if语句里面的err就是null。
4. 总结
在TypeScript语言里面if语句有断言的功能。而且在其他语言中很少出现Error不能赋值null的情况。一般都是可以为空的。
点滴学习,积累知识。我是老铁。我们一起努力!!!