Я недавно начал использовать Typescript, и я использую строгий режим. Во многих случаях у меня есть список значений Nullable, и я использую _.filter () для удаления нулей. Например,
const users: {id: number, name: string | null}[] = getUsers()
const lowerCaseNames = _(users)
.filter(user => !!user.name)
.map(user => user.name.toLowerCase())
.value()
Это не работает, потому что Typescript все еще думает, что user.name может быть нулевым, поэтому user.name.toLowerCase () недопустимо. Вместо этого мне пришлось разделить цепочку по нескольким переменным и использовать Typecast, оба из которых неудачны:
const users: {id: number, name: string | null}[] = getUsers()
const usersWithNames: {id: number, name: string}[] = _.filter(user => !!user.name) as {id: number, name: string}[]
const lowerCaseNames = _.map(usersWithNames, user => user.name.toLowerCase())
Есть ли способ сообщить lodash / typcript, что .filter()
избавляется от нули без типа или без разрыва цепочки?
Спасибо!