Я пытаюсь добавить больше типов в Система запросов MongoDB .
У меня есть объект
interface Person { name: string; age: number }
Я хочу создать объект запроса, который позволяет оператор $gt
только для поля age
, поскольку это число, а не поле name
.
{ age: { $gt: 21 } }
будет действительным, но не { name: { $gt: 21 } }
Что-то вроде
type MongoConditions<T> = {
[P in keyof T]?: T[P] |
{ $gt: number }; // This condition should be allowed only if T[P] is a number
};
Так что это должно быть разрешено
const condition: MongoConditions<Person> = {
age: { $gt: 21 },
name: 'foo'
}
Но это должно провалиться при компиляции:
const condition3: MongoConditions<Person> = {
age: 21,
name: { $gt: 21 }
}