с типом { masha: any[]; petya any[]; }
я вынимаю машу и пытаюсь проверить длину,
const { masha } = request; masha.length; .
Проблема в том что маша может быть null ( я на это повлиять не могу) const { masha = [] } = request; не помогает естественно, что с этим сделать кроме простого if ?
masha?.length
я в компоненте это делаю
ах да) у меня старый ts поэтому так не могу
я обычно перед тем как в приложение передавать данные их валидирую. то есть вот такого быть не может: { masha: any[]; petya any[]; } сначала обработка данных: if (Array.isArray(masha)) { return masha.map(item => validator<ItemInterface>(item)) } return [] потом ловим и обрабатываем ошибки в try catch и возвращаем new Failure() в случае ошибки и на следующем уровне проверяем if (result instanceOf Failure) { // показать ошибку } else { // смело проверяем masha.lengthи отображаем что-то в зависимости от результата }
А чем if не устраивет, если уж ts настолько старый? Можно еще через Array.isArray проверять..
да как-то много кода получается
Да писец, а как ты будешь вообще проверять есть ли маша?
проверяй через короткую запись masha = masha? true:false;
ну вот то же if... короткая запись просто получается и все
да, но короче. Если тебя волнует так, на сколько строк у тебя код.
в общем без ифов никак... ну в любом случае спасибо)
Ну да, у тебя просто при masha = null, будет падать ошибка на masha.lenght
Тернарный оператор можете использовать
const mashaLength = request.masha ? request.masha.length : 0 const mashaLength = Array.isArray(request.masha) ? request.masha.length : 0
Обсуждают сегодня