Я отправлял json
клиенту Angular
{
result:"success"
additional-info:"something"
}
Я отображал выше json
для объекта следующего класса
export class ServerResponseAPI{ //should this be an interface?
constructor ( public result:string,
public additionalInformation:string){
}
}
например. let jsonResponse:ServerResponseAPI = res.body
Когда я попытался получить доступ к ключу jsonResponse.additionalInformation
, я получил сообщение об ошибке undefined
. Я полагаю, это произошло потому, что javascript преобразовал json
в object
с ключами result
и additional-info
(давайте назовем его jsonObject
и когда этот объект был назначен объекту типа ServerResponseAPI
(давайте вызовем его apiObject
), additional-info
не отображается на additionalInformation
из-за разных имен. Я исправил код следующим образом, и он заработал
export class ServerResponseAPI{
'additional-info':string;
constructor ( public result:string,
public additionalInformation:string){
this['additional-info'] = additionalInformation;
}
}
Но я не очень хорошо понимаю, почему исходный код не работал, а последний работал. Если Angular
создает apiObject
с двумя свойствами - result
и additionalInformation
и замечает, что jsonObject
не имеет свойства additionalInformation
, он сохраняет additionalInformation
undefined
. Тогда почему this['additional-info']=additionalInformation
также не делает additional-info
undefined
?