Typescript 类型守卫
type UserInfo = {
name: string;
age: number;
}
function showUser(arg: UserInfo){
console.log(arg.name, arg.age)
}
// 正常情况
let jerry: UserInfo = {name: 'jerry', age: 18}
showUser(jerry)
// 非正常情况
let tom = 111;
showUser(tom) // 如果这里的tom不是UserInfo类型,这里将会报错
如果确定tom
是对的,不想让ts
报错,则需要使用类型守卫,主要的是 arg is UserInfo
返回类型
只要isUser
函数体中的返回值是true
,则满足UserInfo
类型,为false
则不满足
注意,返回类型必须是 arg is UserInfo
,不能是boolean
类型
注意,如果tom
不符合UserInfo
类型,ts
不会报错,只是编译后执行的时候不会执行该代码
通常对于后端请求过来的数据,我们可以通过这个方法来进行校验,如果不符合定义的类型,则不会进行相关操作
function isUser(arg: any): arg is UserInfo {
if( typeof arg.name === 'string' && typeof arg.age === 'number' ){
return true
}else {
return false
}
}
if (isUser(tom)){
showUser(tom)
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 289211569@qq.com