Можно ли сделать определение типа Dynami c с предикатами в TypeScript? - PullRequest
0 голосов
/ 30 мая 2020

Я делаю некоторые определения 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;
}
...