0

我有一个抽象的泛型类,类型如下:

export default abstract class DAO<T, C, S, U, W> {
  [...]
}

其中T, C, S, UeW是包含在 中的类型Prisma。例如,W是类似的东西Prisma._XXXX_WhereInput

在这个类中有以下方法:

protected permissions(): Array<any> {
  
  // Operation based on W type
 
  const userPermission = this.userReferenceByGroup(false);
  const temporaryAssistance = { TemporaryAssistance: { some: { User: { id: this.sub.id } } } };

  return userPermission && [
    this.sub.group === 'pippo' ? temporaryAssistance : {},
    userPermission,
  ].filter(v => Object.keys(v).length !== 0);
}

在这种方法中,我应该根据 W 类型区分对象。我尝试使用instanceof运算符,但出现此错误:

“typeof Prisma”.ts 类型中不存在属性“_XXXX_WhereInput”(2339)

我怎样才能以最好的方式进行这种类型检查?

更新

类型示例Prisma

export namespace Prisma {
  export type DataloggerWhereInput = {
    AND?: Enumerable<DataloggerWhereInput>
    OR?: Enumerable<DataloggerWhereInput>
    NOT?: Enumerable<DataloggerWhereInput>
    id?: IntFilter | number
    serial?: StringFilter | string
    firmwareVersion?: StringFilter | string
    commercialOrder?: StringNullableFilter | string | null
    internalOrder?: StringNullableFilter | string | null
    ftpURL?: StringNullableFilter | string | null
    ftpUser?: StringNullableFilter | string | null
    ftpPassword?: StringNullableFilter | string | null
    sim?: StringNullableFilter | string | null
    online?: BoolNullableFilter | boolean | null
    creation?: DateTimeNullableFilter | Date | string | null
    bootedSince?: DateTimeNullableFilter | Date | string | null
    idBuilding?: IntNullableFilter | number | null
    idType?: IntFilter | number
    Building?: XOR<BuildingRelationFilter, BuildingWhereInput> | null
    Type?: XOR<TypeRelationFilter, TypeWhereInput>
    Device?: DeviceListRelationFilter
  }
}

在这里您可以找到游乐场示例。

4

0 回答 0