Typescript:使用UNION运算符时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript:使用UNION运算符时出错相关的知识,希望对你有一定的参考价值。

我在Typescript中使用OR运算符来定义乘积可以是ProductICartResponseInterface.Product类型

结构为

product: ProductI | CartResponseInterface.Product

但是当我尝试获取ID并将其存储在变量productId中时,为>]

productId= product.id || product.productId

出现以下错误

Error:1
Property 'id' does not exist on type 'ProductI | Product'.
Property 'id' does not exist on type 'Product'.ts(2339)

Error2:
Property 'productId' does not exist on type 'ProductI | Product'.
Property 'productId' does not exist on type 'ProductI'.ts(2339)

product.model.ts

export interface ProductI {
  id?: string;
  name: string;
  price: number;
  .
  .
  .
}

cart-response.model.ts

export interface Product {
  productId: string;
  name: string;
  totalPrice: number;
  .
  .
  .
}

有人可以告诉我如何解决吗?

我在Typescript中使用OR运算符定义产品可以是ProductI类型或CartResponseInterface.Product结构为产品:ProductI | CartResponseInterface.Product但是当...

答案

您可以使用Type Assertion强制类型,然后检查产​​品的ID。

另一答案

如果只想在使用对象时键入check,那么Dane Brouwer's answer是解决方法。尽管不是最漂亮的解决方案,但(目前)这是区分接口的唯一方法。

另一答案

https://stackblitz.com/edit/typescript-interface-inheritance

以上是关于Typescript:使用UNION运算符时出错的主要内容,如果未能解决你的问题,请参考以下文章

从 Typescript 中的 union 引用 Complex 类型

在 NZSQL 中使用 union all 限制时出错

使用 UNION 时无法识别 json[] 类型的相等运算符

执行 T-SQL UNION 语句时出错。有啥解释吗?

Typescript Union To Intersection 返回值从不

Typescript 'keyof' 关键字在使用 react setState 函数时出错