Я недавно обновил машинопись и lodash, и теперь компилятор понимает это, например. методы типа _.last()
будут возвращать значение, если массив не пустой и неопределенный, если он пустой. Это ожидаемое поведение как таковое, особенно если мы не знаем, является ли массив пустым или нет.
Однако в таких случаях, как вызов _.last([1,2,3])
, мы просто знаем , что массив не пустой, и это всегда будет возвращать число. Более того, у меня есть несколько мест в коде, где я проверил отсутствие пустот и действую соответственно, например:
if (!_.isEmpty(array)) {
return _.last(array);
}
... где, просто взглянув на этот код, мы знаем, что оператор вернет элемент с типом элемента в этом массиве. Но тип возврата, тем не менее, T | undefined
.
Я знаю, что могу просто привести значение в таких случаях. Но я бы предпочел не кастовать вещи.
Итак, мой вопрос: может ли машинопись понимать такие ситуации?