- 使用in,检查特定的属性
type TypeA ={ a: number, kind: string}
type TypeB = { b: number, kind: string}
type UType = TypeA | TypeB
function fn( param: UType){
if( 'a' in param){
param.a
}else {
param.b
}
}
- 判断特定的属性的值
type TypeA ={ a: number, kind: 'a'}
type TypeB = { b: number, kind: 'b'}
type UType = TypeA | TypeB
function fn( param: UType){
if(param.kind === 'a'){
param.a
}else{
param.b
}
}
- 错误的写法
type TypeA ={ a: number, kind: 'a'}
type TypeB = { b: number, kind: 'b'}
type UType = TypeA | TypeB
function fn( param: UType){
if(param.a){ // 报错:Property 'a' does not exist on type 'UType'. Property 'a' does not exist on type 'TypeB'.ts(2339)
param.a // do something
}else{
param.b // do something
}
}