У меня есть таблица базы данных, которая называется student
.Как использовать TypeScript для построения схемы и моделей базы данных?
id | name | createdAt | deleted
--------------------------------
1 | foo | 2017-01-13 | false
Когда я извлекаю значения из базы данных, я получаю значения, сопоставленные с правильным типом. У меня есть интерфейс для этой таблицы:
interface Student {
id: number;
name: string;
createdAt: Date;
deleted: boolean;
}
Чтобы захватить значения из базы данных я делаю что-то вроде:
await knex('student').where('deleted', false);
Я думал, как заменить жестко закодированные строки для обозначения таблицу/столбцы, поэтому можно будет переименовывать/удалять столбцы и обнаруживать проблемы во время компиляции, а не во время выполнения. Я создал объект:
const tables = { student: 'student' };
const cols = {
id: 'id',
name: 'name',
createdAt: 'createdAt',
deleted: 'deleted',
};
await knex(tables.student).where(cols.deleted, false);
Это работает. Но проблема с этим подходом заключается в том, что если кто-то изменит интерфейс модели (Student
) и забудьте изменить объект cols, он все равно будет работать во время компиляции.
Если я сделаю const cols: Student
, он будет проверять все столбцы, но тип для всех столбцов на объекте cols
должен быть строкой.
Есть ли способ, которым я могу это сделать? Может быть, из этой линии, хотя или, возможно, совершенно другого подхода?
Я Ждут» t знать об этой функции. Это именно то, что мне нужно. Милая! – BrunoLM
Подробнее об этом можно найти здесь: https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript –