169 похожих чатов

Вот такой абстрактный пример: Order - сущность описанная в БД и

у нее есть много items, которые делают leftJoin.
И вот проблема нужно написать проверку на items, чтобы свойство items в order было не undefined и это был наполненный массив.

Вопрос, можно как-нибудь обойтись без создания IOrderWithItems, который наследуется от IOrder, чтобы перегрузить опциональное свойство?
interface IOrder {
prop1: string;
prop2: string;
items?: object[];
}
interface IOrderWithItems extends IOrder {
items: object[];
}

class Order {
public prop1: string;
public prop2: string;
public items?: { type: string} [];
}

class OrderSpec {
public hasItems(order: Order): order is IOrderWithItems {
return order.items !== undefined && order.items.length > 0;
}
}


const order: Order = {
prop1: '',
prop2: '',
};
if (!orderSpec.hasItems(order)) {
return;
}
order.items[0].type = ' <---- здесь ошибки в компиляции не будет';

2 ответов

8 просмотров

cделать дженерик? https://bit.ly/37gGAQP

Omit + &

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Есть предложения, как подобное можно упростить?
Hemul GM
12
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
just use free version ?? pycharm has a free version
Fan / Ac
9
Карта сайта