дальше ругается, что в следующей после фильтра мапе я не проверил на ундефайнед?
поставьте ? перед мапом
да, это долбаные знаки вопроса во всему проекте уже расставлены просто хочу понять логику компилятора, почему я должен ставить знак вопроса, если уже отфильтровал ундефайнед
Так вы же фильтрует свойство .
article?.id
так можно сделать, но это для меня после строго типизированных языков выглядит как костыль мы уже знаем что он не ундефайнет, но должны опять проверять на него, что делает код грязней и предыдущий фильтр менее полезным
Лишний наверное один !
В c# тоже optional есть
Хотя там ниже проверяет
Вам надо вернуть айдишники статей в массиве?
Зачем восклицательный знак после id ?
массив обьектов внутри кажого обьект типа article | undefined внутри каждого число типа number | undefined и я пытаюсь как-то красиво это оформить
id тоже может быть undefined
Так а зачем все равно восклицательный знак, и если у Вас стоил или на тип, то ясно что будет ругать без опшионала. Либо опшионал либо отключать стрикт мод
А почему не одним map, а цепочкой filter с двумя мапами? Вас сильно напряжет условный оператор внутри единственного map?
а что будет, если в мапе во время такого опционала выпадет ундефайнед? Оно пропустит этот елемент?
всё логично. нужно понимать, как работает цепочка вызовов функции. я не лазил в исходники rxjs, но вангую, что там что то типа объекта, методы которого возвращают сам же объект. + на нём есть свойство value, которое ты мутируешь. и вот ты на каком то этапе фильтром приводишь это value к undefinded, и пробрасываешь его дальше...
я понял, что до фильтра и после значение будет (number | undefined) и даже если я фильтрую undefined значения, (number | undefined) в (number) не превратиться просто тогда это немного нелогично, зачем нужен вообще фильтр, если после надо все равно ставить знак "?"
ну так работает js. ты написал цепочку вызовов. она в любом случае отработает до конца, просто без аргумeнта value. ты хочешь, что бы последний filter() не выполнялся, но так не будет.
я хочу, чтобы тип менялся типа (number | undefined) => filter => (number)
в js такого не будет, это тайпскрипт
Обсуждают сегодня