# Initializing get/set accessor without method syntax?

**URL:** <https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370>\
**Category:** 💡 Ideas\
**Created:** [June 16, 2022, 4:12pm UTC](https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370 "2022-06-16T16:12:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![uhyo](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/uhyo/32/1009_2.png) [@uhyo](https://es.discourse.group/u/uhyo)\
**Post date:** [June 16, 2022, 4:12pm UTC](https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370/1 "2022-06-16T16:12:34Z")

</div>

I often create an “uninitialized” object of following form:

```nohighlight
const uninitialized = () => {
  throw new Error("Uninitialized");
};

const obj = {
  get foo() {
    return uninitialized();
  },
  get bar() {
    return uninitialized();
  },
  get baz() {
    return uninitialized();
  }
};

```

What if we could write like following; this is shorter, more straightforward and slightly memory efficient.

```nohighlight
const obj = {
  get foo: uninitialized,
  get bar: uninitialized,
  get baz: uninitialized,
};

```

This pattern often appears when I want to make TypeScript happy where I have to supply an object that has specific shape but is not initialized yet.

---

<div class="post-metadata">

**Author:** ![theScottyJam](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/thescottyjam/32/616_2.png) [@theScottyJam](https://es.discourse.group/u/theScottyJam)\
**Post date:** [June 16, 2022, 7:36pm UTC](https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370/2 "2022-06-16T19:36:30Z")

</div>

Here's some previous discussion on this topic: [Allow arrow functions getters](https://es.discourse.group/t/allow-arrow-functions-getters/930)

---

<div class="post-metadata">

**Author:** ![aclaymore](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/aclaymore/32/501_2.png) [@aclaymore](https://es.discourse.group/u/aclaymore)\
**Post date:** [June 16, 2022, 7:51pm UTC](https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370/3 "2022-06-16T19:51:49Z")

</div>

I wonder if decorators could also help here, especially if TypeScript added support for having the decorator participate in the typing [Implement the updated JS decorators proposal · Issue #48885 · microsoft/TypeScript · GitHub](https://github.com/microsoft/TypeScript/issues/48885)

---

<div class="post-metadata">

**Author:** ![bergus](https://yyz2.discourse-cdn.com/free1/user_avatar/es.discourse.group/bergus/32/152_2.png) [@bergus](https://es.discourse.group/u/bergus)\
**Post date:** [June 16, 2022, 11:14pm UTC](https://es.discourse.group/t/initializing-get-set-accessor-without-method-syntax/1370/4 "2022-06-16T23:14:24Z")

</div>

You could do

```nohighlight
const uninitialized = {
  get() {
    throw new Error("Uninitialized");
  },
  enumerable: true,
  configurable: true,
};
const obj = Object.defineProperties({}, {
  foo: uninitialized,
  bar: uninitialized,
  baz: uninitialized,
});

```
