# 🦾 Weekly Topic: Most Challenging Coding Task or Concept

**URL:** https://forum.makecode.com/t/weekly-topic-most-challenging-coding-task-or-concept/31290
**Category:** Arcade
**Created:** [October 21, 2024, 5:28pm UTC](https://forum.makecode.com/t/weekly-topic-most-challenging-coding-task-or-concept/31290 "2024-10-21T17:28:43Z")
**Posts on this page:** 1
**Showing post:** 21

<div class="post-metadata">

### Author: ![richard](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/richard/32/5417_2.png) [@richard](https://forum.makecode.com/u/richard)
#### Post date: [October 21, 2024, 11:21pm UTC](https://forum.makecode.com/t/weekly-topic-most-challenging-coding-task-or-concept/31290/21 "2024-10-21T23:21:26Z")

</div>

@WoofWoof it is not possible to get a list of the functions/variables exported from a namespace at runtime in MakeCode.

The JavaScript language that MakeCode uses is something we like to call “Static TypeScript”. It’s based off of the [TypeScript](https://en.wikipedia.org/wiki/TypeScript) programming language but has a few restrictions/differences to make it possible for us to compile down to something that can run on extremely low-end hardware (like a micro:bit). You can find out more info on the differences between Static TypeScript and vanilla TypeScript [here](https://makecode.com/language).

Normal TypeScript gets converted into JavaScript, which is interpreted in your browser or in a runtime like Node.js. I won’t get into how code interpretation works here, but suffice to say it requires hardware with more RAM and CPU power than devices like the micro:bit have. To get around this, we actually compile Static TypeScript from text to binary code much like how a compiler for a language like C++ would. This lets us create code that is much more efficient and can run on inexpensive hardware.

Anyways, back to your original question: in regular TypeScript, you can iterate over the exported functions/variables in a namespace [like this](https://www.typescriptlang.org/play/?#code/HYQwtgpgzgDiDGEAEAXaKkG8BQSkQA8YB7AJwwDMBXYeFAS2OCQHcALENANwlIAoAlFmy4kAXxF5CJckgA2EDGACeANRCl6IAEYKkAXiQAmAAzYJ2CmSR94TKBi4g5VZMQpIA8toBWEOgB0ANYQylB8aA4CQjh4dsBQxAoBcsQA5nxOLhAC5thAA). That’s because regular TypeScript implements namespaces as JavaScript objects, which work with `Object.keys()`.

That same code is [an error](https://makecode.com/_6c20twg9giMw) in MakeCode, because we implement namespaces differently.

---

_[View the full topic](https://forum.makecode.com/t/weekly-topic-most-challenging-coding-task-or-concept/31290)._
