提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近在学习ts和用ts写项目,突然在想,ts 可以用typeof 和 instanceof 对JavaScript的原生类型做判断,那该怎么对自定义类型做判断,所有写下来记录一下
一、TS怎么对自定义类型进行类型判断?
使用 类型谓词 is 对自定义的类型进行判断
二、案例
1.demo
代码如下(示例):
export interface GetPageListReq {
conditions?: Conditions[]
current: number
size: number
}
export interface Conditions {
condition: number | null
conditions: ConditionsItem[]
}
export interface ConditionsItem {
comparisonOperator: string
condition: number | string | null
entityObject: Entity
}
export interface Entity {
[key: string]: string
}
/**
* @description 自定义类型判断 -- Conditions | GetPageListReq
* @param {Conditions | GetPageListReq} value 请求参数
*/
export function isGetPageListReq(value: Conditions[] | GetPageListReq): value is GetPageListReq {
return (value as GetPageListReq).conditions !== undefined
}
2.测试结果
代码如下(示例):
function test(data: Conditions[] | GetPageListReq): void{
let val = null
if(isGetPageListReq(data)){
val = data
console.log(val)
}else{
val = {current:1, size: 30, condition: data}
console.log(val)
}
}
总结
在 ts 中要对自定义类型做类型判断,最终还是要通过数据结构的特点不同来进行区分