Я делаю некоторые определения TypeScript для веб-API, который в основном управляется Ransack .
Ransack использует ключи Dynami c с использованием предикатов, поэтому поиск по полю name
может выглядеть как name_cont: 'foo'
, а поиск по идентификатору может быть id_eq: 123
. Возможно ли сделать что-то подобное в TypeScript -
Учитывая интерфейс:
interface Model {
id: number;
name: string;
}
Определите тип, который делает это действительным:
let modelQuery: RansackQuery<Model> = { name_cont: 'foo', id_eq: 123 }
Что-то вдоль строки (очевидно, это не работает):
interface RansackQuery<T> {
[key: keyof T] + '_eq': string | number;
[key: keyof T] + '_cont': string;
}