Как мне отформатировать ответ, если ключ объекта существует?

Это поведение задокументировано так:

from getStringSet:

"Обратите внимание, что вы не должны изменять экземпляр набора, возвращенный этим вызовом. сохраненных данных не гарантируется, если вы это сделаете, и ваша способность вообще не изменять этот экземпляр. "

И это кажется вполне разумным, особенно если оно задокументировано в API, иначе это API должен будет копировать каждый доступ. Поэтому причиной этого дизайна была, пожалуй, производительность. Я полагаю, что они должны заставить эту функцию возвращать результат, завернутый в немодифицируемый экземпляр класса, но это снова требует выделения.

1
задан Antonio Vasilev 5 March 2019 в 11:38
поделиться

2 ответа

«undefined» не может быть разрушен. Вы должны проверить, не определено ли оно, прежде чем разрушать.

let limit = {'amount': '1000', 'code': '£'}, outstanding = undefined, debt = {'amount': '900', 'code': '£'};

const retrieveAmounts = amountStruct => {
    if (typeof amountStruct === 'undefined') 
        return null;
    let {amount, code} = amountStruct;
     return {
        amount: isStringDefined(amount) ? amount : null,
        currencyCode: isStringDefined(code) ? code : null
    };
};

Встроенный код @ alex35.

const retrieveAmounts = (amountStruct) => ((typeof amountStruct === 'undefined') ? null : {
    amount: isStringDefined(amountStruct.amount) ? amountStruct.amount : null,
    currencyCode: isStringDefined(amountStruct.code) ? amountStruct.code : null
});
0
ответ дан riddler 5 March 2019 в 11:38
поделиться

Вы можете поместить параметр по умолчанию в вашу функцию retrieveAmounts, так что помещение undefined в вашу функцию retrieveAmounts не приведет к ошибке.

const retrieveAmounts = (outstanding = { amount: null, code: null }) => ({  // << here
    amount: isStringDefined(outstanding.amount) ? amount : null,
    currencyCode: isStringDefined(outstanding.code) ? code : null
});
0
ответ дан alex351 5 March 2019 в 11:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: