Как справиться возможно неопределенным в машинописи?
У меня проблема с ошибкой TS2322:
Тип (string | undefined)[] нельзя назначить типу string[]
Это мой код:
const keys: string[] = objectList
.map(obj => obj.Key)
.filter(key => { return !!key;});
где Key является необязательным параметром своего класса (S3.Types.ObjectList для полного раскрытия).
Я на 100% уверен, что в ключах нет неопределенного элемента, так как я удаляю их с помощью своего фильтра.
Как бы вы сделали, чтобы удалить эту ошибку?
С уважением, Жюльен
1 ответ
К сожалению, Typescript не передает информацию о проверке filter
в любом случае, так что единственное, что мы можем сделать, это использовать ненулевое утверждение:
const keys: string[] = objectList
.map(obj => obj.Key!) // ! means we know this is not null, we won't actually know until the next check
.filter(key => !!key);
Или более последовательная версия, где мы утверждаем только после проверки:
const keys: string[] = objectList
.filter(obj => !!obj.Key)
.map(obj => obj.Key!)