node.js - Exporterad variabel X har eller använder namnet 'OpTypes.or' från den externa modulen "/node_modules/sequelize/lib/operators" men kan inte namnges
import { Op } from 'sequelize';
export const someFunc = (user_id: string) => {
return {
where: {
[Op.or]: {
private: false,
[Op.and]: {
createdBy: user_id,
private: true
}
}
}
};
};
Detta fungerade bra tidigare men efter att ha uppgraderat sequelize till version 6.12.1 eller något annat problem uppstod det berömda felet :-
ts(4023) Exported variable 'someFunc' has or is using name 'OpTypes.or' from external module "/node_modules/sequelize/lib/operators" but cannot be named.
ts(4023) Exporterad variabel 'someFunc' har eller använder namnet 'OpTypes.and' från extern modul "/node_modules/sequelize/lib/operators" men kan inte namnges. började dyka upp. Jag har följande lösningar som tillfällig åtgärd för det :
import { Op } from 'sequelize';
export const someFunc= (user_id: string) => {
return {
where: {
[Op.or as symbol]: {
private: false,
[Op.and as symbol]: {
createdBy: user_id,
private: true
}
}
}
};
};
import { Op } from 'sequelize';
export const someFunc= (user_id: string):object => {
return {
where: {
[Op.or]: {
private: false,
[Op.and]: {
createdBy: user_id,
private: true
}
}
}
};
};
eller definiera ett gränssnitt för objektet och använda det som returtyp
export interface someFuncOptions {
where: {
[Op.or]: {
private: boolean;
[Op.and]: {
createdBy: string;
private: boolean;
};
};
};
}
Jag försökte uppgradera sequelize till den senaste versionen också, men det ger fortfarande samma fel. Så jag kom fram till att detta var ett typescript-fel. Min nuvarande typescript-version för projektet är 4.2.3 med sequelize-typescript på version 2.1.0.
Ska jag använda ovanstående lösningar eller finns det någon annan lösning som är bättre än dem? Och om jag använder ovanstående lösning, kommer jag då att behöva använda lösningen överallt där jag använder symbolerna från Op i Sequelize i min kod? För närvarande är detta den enda platsen där felet dyker upp där jag har använt Op.or eller andra symboler från min kod.
Svar #1
Publicerar för eftervärlden. Jag använder inte sequelize-typescript, men använder [email . När jag uppgraderade från [email för några månader sedan stötte jag på detta problem. Jag stötte även på detta problem igen i morse.
Lösningen för mig var:
import { Op, WhereOptions } from 'sequelize';
export const someFunc = (user_id: string): { where: WhereOptions } => {
return {
where: {
[Op.or as symbol]: {
private: false,
[Op.and as symbol]: {
createdBy: user_id,
private: true
}
}
}
};
};
Observera returtypen.
