#javascript #typescript
Вопрос:
Я создал класс базовой модели с моделью для входящих данных, я буду моделировать данные внутри класса по некоторым внешним причинам. Хотя я столкнулся с проблемой, связанной с определением входящих данных в этот класс модели.
Это мой класс
export class EntityBasic { constructor( public id: string, public title: string, public urn?: string, public risk_level?: string, public be_aware?: string, public body?: string, public published_at?: string, public created_at?: string, public updated_at?: string, public description?: string, public notes?: string, ) {}} }
Как я определяю содержимое внутри него на другой странице:
public getEntity(setEntity) { return new EntityBasic( setEntity.id, setEntity.title, setEntity?.urn, setEntity?.risk_level, setEntity?.be_aware, setEntity?.body, setEntity?.published_at, setEntity?.created_at, setEntity?.updated_at, setEntity?.report?.summary || '', setEntity?.report?.metadata?.source_notes, setEntity?.report?.metadata?.notes, ); }
Но определение данных таким образом создало мне проблемы, так как иногда, например, не будет урны или уровня риска, и данные будут перепутаны внутри класса.
Я хотел бы, чтобы способ определения был таким (это не сработало):
public getEntity(setEntity) { return new EntityBasic( id = setEntity.id, title = setEntity.title, urn = setEntity?.urn, risk_level = setEntity?.risk_level, ) }
Комментарии:
1. Не можете ли вы определить значение по умолчанию для каждого поля? Или сохраните их
null
и перезапишите это значение в случае, если есть значение из входящих данных. Таким образом, каждое поле по крайней мере определено.
Ответ №1:
Я считаю, что объединение всех параметров в один объект-лучшее решение.
- Оберните их как интерфейс
interface EntityBasicParameters { id: string; title: string; urn?: string; risk_level?: string; be_aware?: string; body?: string; published_at?: string; created_at?: string; updated_at?: string; description?: string; notes?: string; }
- Примите только этот объект в качестве параметра конструктора
export class EntityBasic { constructor(params: EntityBasicParameters) {}} }
- Теперь вы можете передавать только существующие данные
public getEntity(setEntity) { return new EntityBasic({ id: setEntity.id, title: setEntity.title, urn: setEntity?.urn, risk_level: setEntity?.risk_level, }) }
или просто
public getEntity(setEntity) { return new EntityBasic(setEntity) }