Using enum values as strictly typed object keys

In TypeScript, it’s often useful to define interfaces or complex (structured) types whose properties (or keys) may only be values of a previously defined enum type. Here’s a good example: an object declaring a set of buttons for a modal dialog. Instead of this… type DialogButtons = { yes?: boolean, no?: boolean, cancel?: boolean } interface IDialog { buttons: DialogButtons } const dialog: IDialog = { buttons: { yes: true,

Continue reading

Universal getter for plain JS objects.

Many times in JavaScript we have to reach deep into objects to access fields that could possibly not be there at all; for example let’s assume I have a JS object called options into which I’ve just read an entire JSON configuration file. Trying to access a field like options.application.cache.enable directly will potentially fail (e.g. when any of the intermediate levels is missing)… if (options.application.cache.enable) { // do stuff }

Continue reading

Quickly filtering large lists of texts.

Recently, I had to make a mock-up of a filtering function (something I need for a project I work on) so I can show-case it around. And since this mock-up seems to impress some people, I decided to share this function with everybody so others may enjoy the “loot” :). Briefing The function (i.e. filter()) basically receives a query, a large list of text items and (optionally) some options. It

Continue reading

JS classes for the masses.

Following on an older post of mine, I decided to write a new article about an(other) implementation of OOP Classes in JavaScript. This is something that brings a lot of value from very few lines of code and I want to share it with everyone and see how it can be improved. First let’s see the code (you should check here for the latest version) and then I’ll try and

Continue reading

A simple(r) approach for class-based OOP in JavaScript.

Like others before me, I found JavaScript’s prototype-based OOP support – while very powerful – quite cumbersome in some situations where I needed a certain structure or hierarchy of objects, situations in which one quickly comes to the conclusion that the best answer would be the concept of a Class. However, while I am well aware that the web is filled with various implementations of classical (i.e. class-based) object orientation

Continue reading