Есть ли способ объявить свойство объекта без его инициализации?Javascript

Форум по Javascript
Ответить
Anonymous
 Есть ли способ объявить свойство объекта без его инициализации?

Сообщение Anonymous »

А.С.: Порядок свойств объектов в JS — очень сложная тема. Для моих целей важен только порядок вставки.
TL;DR: Есть ли способ объявить свойство объекта, не присваивая ему значения?

Код: Выделить всё

const user = { name: [i]unset[/i], age: 42 }
У меня есть набор асинхронных функций, каждая из которых возвращает значение, связанное с уникальным ключом. Затем они вызываются параллельно для создания объекта с парами ключ-значение, используемыми в качестве записей (свойств). Примерно так:

Код: Выделить всё

const props = {}
const propsSet = getters.map(async ([key, getValue]) => {
props[key] = async getValue()
})

await Promise.all(propsSet)

return props
Попробуйте.
Поскольку все это асинхронно, порядок свойств в реквизитах повсюду: иногда я получаю { foo: …, bar: … , иногда { bar: …, foo: … . Я мог бы это исправить, связав каждый метод получения с порядковым номером. Но гораздо более простое решение — как можно скорее инициировать свойства; из-за того, как работает цикл событий, это, по сути, гарантия того, что свойства свойств будут упорядочены так же, как и в геттерах:

Код: Выделить всё

const propsSet = getters.map(async ([key, getValue]) => {
props[key] = null // or any other initialization token
props[key] = await getValue()
})
В чистом JS это совершенно нормально, но в TS это обычно ошибка компилятора (поскольку произвольный «токен инициализации» не может быть назначен строго типизированным свойствам реквизита
код>); поэтому мне нужно отключить компилятор, чего я не люблю делать:

Код: Выделить всё

// @ts-expect-error
values[key] = null
Попробуйте.
Я понял, что то, что мне по сути нужно, очень похоже на объявление переменных отдельно от инициализации. их, – как в стиле старой школы JS:

Код: Выделить всё

var value1, value2

value1 = 42
value2 = 17
Существует ли какой-либо существующий или планируемый (предлагаемый) способ объявления свойств объекта без их инициализации?
Обратите внимание: я не спрашиваю о способах упорядочивания свойств. Для этого существует множество стратегий, включая использование вышеупомянутых порядковых номеров (например, индексов массива).

Подробнее здесь: https://stackoverflow.com/questions/793 ... alizing-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»