Задача TypeScript. Поля начинающиеся с определённого шаблона
typescript задачиЗадача
Есть сущность рабочего процесса WorkflowEntity
. В ней поля начинающиеся на need
— это флаги выполняемых операций.
type WorkflowEntity = {
id: string;
isActive: boolean;
needImport: boolean;
needCalculate: boolean;
needExport: boolean;
};
Флаги выставляются чекбоксами на фронте. Решили, что бэкенд сам определять какие галочки выводить, присылая список нужных “галочек” в виде:
{
"id": "d36f5fe2-32ea-4037-a4bd-5db7d1b02207",
"name": "Калькуляция",
"workflowField": "needCalculate"
}
Нужно описать тип операции так, чтобы workflowField
соответствовал полям из WorkflowEntity
, но только начинающимся на need
.
Решение
Использовать шаблонные литералы:
type WorkflowOperation = {
id: string;
name: string;
workflowField: Extract<keyof WorkflowEntity, `need${string}`>; // "needImport" | "needCalculate" | "needExport"
};