在这种情况下,打字稿可以做联合类型断言吗?

Posted

技术标签:

【中文标题】在这种情况下,打字稿可以做联合类型断言吗?【英文标题】:can typescript do union type assertion in this case? 【发布时间】:2020-09-30 23:06:45 【问题描述】:

在这种情况下打字稿可以做联合类型断言吗?我想使用ab.aab.bab. hasOwnProperty 来断言type Atype B 吗?我该怎么办?

export interface A extends Object 
    a: string;


export interface B extends Object 
    b: number;


export type AorB = A | B;

function test(ab: AorB) 
    // can ts auto predict this ?
    if (ab.hasOwnProperty('a')) 
        ab.a // type error
    


【问题讨论】:

【参考方案1】:

更新你的函数如下:

function test(ab: AorB) 
    // can ts auto predict this ?
    if ('a' in ab) 
        console.log(ab.a);
    

【讨论】:

以上是关于在这种情况下,打字稿可以做联合类型断言吗?的主要内容,如果未能解决你的问题,请参考以下文章

函数的打字稿联合/交集类型

为啥打字稿将联合中的属性标记为不存在?

打字稿:将标记的联合转换为联合类型

打字稿从元组/数组值派生联合类型

差异联合类型和区分联合打字稿/ F#

如何从打字稿中的标记联合类型中提取类型?