В TypeScript есть безопасный способ записи axiosResult.data.attendeeResults.username - PullRequest
0 голосов
/ 06 февраля 2019

Если что-то не пойдет не так, я ожидаю, что объект JavaScript, на который я ссылаюсь, будет выглядеть так:

axiosResult.data.attendeeResults.username

будет содержать реальные данные.То есть, data определено, attendeeResults определено и username определено.Если какой-либо из них не определен, я бы хотел, чтобы весь экспресс просто спокойно возвращал undefined без ошибок.

Как я могу сделать это в TypeScript?Или даже только EcmaScript 6?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Рекомендуется добавить оператор ? в javascript для достижения того же варианта использования, что и axiosResult?.data?.attendeeResults?.username, чтобы свойство читалось только в том случае, если LHS не является неопределенным или нулевым.Возвращает undefined в противном случае

В машинописном тексте из документов [https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#non-null-assertion-operator] вы можете использовать axiosResult!.data!.attendeeResults!.username для получения того же результата.

0 голосов
/ 06 февраля 2019

Одним из решений является использование оператора ненулевого подтверждения официальный документ

Из официальных примечаний к выпуску TypeScript:

function processEntity(e?: Entity) {
    validateEntity(e);
    let s = e!.name;  // Assert that e is non-null and access name
}

В вашем случаеВы можете выполнить проверку на axiosResult.data:

axiosResult.data!.attendeeResults!.username
...