断言
来源:2-16 类型别名,字面量 和 交叉类型
慕妹8334715
2020-10-16
interface RuleProp { //定义一个接口
type: 'requirde' | 'email';
message: string;
}
...........
props: {
rules: Array as PropType<RulesProp>
},
老师您好
我有点不太理解断言
断言相当于类型转换吗? 还是判断
这里的rules 必须遵守RuleProp 这个接口 规则对吧
谢谢 老师
写回答
1回答
-
慕雪9208097
2020-10-16
我自己试了试,断言应该是把联合类型具体指定为某个类型,只是为了通过ts编译的。但本质上没有做类型转换和判断处理。
ts代码:将stringOrNumber断言成string,这样获取length属性就不会报错。不进行断言,由于length不是number和string的共有属性,将会报错。
function getLength(stringOrNumber: string | number): number { const result = stringOrNumber as string; return result.length; } console.log(getLength(123));
编译后的js代码:可以看到,没有做判断和类型转换处理。虽然通过了ts编译,但这段代码运行在浏览器上是有问题的。
function getLength(stringOrNumber) { var result = stringOrNumber; return result.length; } console.log(getLength(123));
022020-10-17