如何使用带有或条件的打字稿界面

问题描述 投票:0回答:1

我是打字稿新手。在这里,我有以下代码,看起来像,

interface FirstOriginal {
  active: boolean;
  status: boolean;
}

interface Product {
  id: number;
  name: string;
  Original: FirstOriginal;
}

interface MainProduct {
  id: number;
  Name: string;
  Original: Product;
}

class MainService {
  buildproduct = memoize((products: Array<Product | MainProduct>, ismain) => {
    const group = _.groupBy(products, (bsp: Product) =>
      !ismain
        ? bsp?.Original?.active ?? undefined
        : bsp?.Original?.Original?.active ?? undefined
    );
  });
}

现在,在这里我无法执行bsp?.Original?.active ?? undefined : bsp?.Original?.Original?.active ?? undefined。因为我只能在一个界面上做到这一点,所以任何人都可以帮我这个忙。喜欢,

如何将这两个接口用于相同的类函数。

谢谢。

javascript angular reactjs typescript
1个回答
0
投票

要指定可选属性或参数,可以在属性/参数名称前使用?

例如:

memoize((products?: Array<Product | MainProduct>, ismain?:number) {
}

interface Product {
  id?: number;
  name?: string;
  Original?: FirstOriginal;
}

另一种方法是使用[Partial][1]。部分将返回给定接口的所有子集。

memoize((products?: Array<Partial<Product | MainProduct>>, ismain?:number) {
}
© www.soinside.com 2019 - 2024. All rights reserved.