我有一个抽象的泛型类,类型如下:
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
}
}
在这里您可以找到游乐场示例。