Storing a function in a hash map using TypeScript

Currently, I am faced with a scenario in which I must store functions as values with string keys in lookup tables. These functions serve as handlers with varying names and input parameters but the same return type. When a caller searches for a specific index, it should locate that particular key in the table and retrieve the corresponding function to be invoked accordingly.

As a newcomer to TypeScript, I am unsure of how to approach coding for this situation. Any assistance or guidance would be greatly appreciated.

Answer №1

To achieve this, it is essential to create an interface called IHash.

interface IHash {
    [key: string]: Function
}

const newInterface: IHash = {}

newInterface.methodName = function () { 
    console.log("Executing the method")
}

newInterface.methodName()

Answer №2

const hashTable: IHashTable = {};   

hashTable["key"] = "data"; // assign value

let data = hashTable["key"]; // retrieve value

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Incorporate Select2 functionality within the Angular2 application

I'm currently working on incorporating the Select2 plugin into my Angular2 application. Successfully, I have managed to set up select2 and transform my multiple select fields as expected. However, I am now facing a challenge in retrieving the selected ...

Potential issue with Jhipster: loading of data could be experiencing delays

I've encountered an issue with getting my chart to display properly. I am working on creating a chart using ng2-charts, where I retrieve data from a service and then display it on the chart. The problem arises when the data is not correctly displayed ...

Troubleshooting an Angular application

Just diving into Angular and following along with the tutorial on https://angular.io/tutorial. However, I seem to be facing an issue in Chrome where the const HEROES is not available in my watch list. It keeps showing as "not available". What could be ca ...

Retrieve data from each object in the API and then initiate a new request

Here is how my first post request appears: this.http.post('http://localhost:8080/api/userfilm/get/', { name: this.name }) This request returns an array of objects with the property 'filmid'. Now, let's take a look at my sec ...

How can I replace document.getElementById in Angular4 using Typescript?

Angular4 is a new concept for me as I work on my practice projects. To access HTML elements and retrieve their values, I have been using <HTMLInputElement> document.getElementById or <HTMLSelectElement> document.getElementById. I'm curio ...

Encountering an issue with PrimeNG's <p-calendar> component: the error message "date

I encountered an issue resulting in the following error message: core.es5.js:1020 ERROR Error: Uncaught (in promise): TypeError: date.getMonth is not a function TypeError: date.getMonth is not a function This error occurs whenever I attempt to implement ...

Error: The Angular test bed is unable to locate the mixpanel definition

Is there a way to test the functionality of the form without considering Mixpanel? I am encountering an error as follows. login.component.ts ngOnInit() { Mixpanel.trackEvent("View Screen", { "Screen Name": "Login" }); this.createForm(); } cr ...

Asynchronous handling of lifecycle hooks in TypeScript for Angular and Ionic applications

I'm intrigued by the idea of integrating TypeScript's async/await feature with lifecycle hooks. While this feature is undeniably convenient, I find myself wondering if it's considered acceptable to make lifecycle hooks asynchronous. After ...

In which situations is it required to specify the return type of a function in TypeScript?

When it comes to making functions in typescript, the language can often infer the return type automatically. Take for instance this basic function: function calculateProduct(x: number, y: number) { return x * y; } However, there are scenarios where dec ...

How can you prevent the keys from being read-only when mapping onto a type?

Here's a common query: How can I change keys from readonly to writable when using a type that is Readonly? For example: type Foo = Readonly<{ foo: number bar: number }> type Bar = /* What's the method to duplicate the Foo type, but w ...

Failure of Gulp Dest() to Generate File Output

Struggling to make gulp.dest output correctly. I'm aiming to output to the root of an ASP.NET Core project that I'm repurposing for TypeScript development. Any guidance on how to achieve this would be greatly appreciated. Below is the current con ...

Using Typescript to transform a post request body into a map

I am currently developing a REST API using Node.js and TypeScript. When creating a user, the API expects a JSON POST request: import {Request, Response, Router} from "express"; import {User} from '../../../models/user.model'; import {createUser} ...

What is the best way to assign the selected attribute to my mat-option element?

I am encountering an issue with my mat-select and mat-option control. I am trying to apply the selected attribute to the first mat-option control without using binding on [(ngModel)] or [(value)]. The mat-option control is being generated by the *ngFor d ...

The data type 'string | number | boolean' cannot be assigned to type 'undefined'. Specifically, the type 'string' is incompatible with type 'undefined'. Error code: ts(2322)

When attempting to create a partial object with specific fields from a full object that meet certain criteria, I encountered a TypeScript error message. To better explain this issue, I designed a test module to showcase the concept/problem without using ac ...

I'm having trouble with my pagination controls not correctly displaying the next and previous indices. What adjustments should I make to fix this issue?

When a record is clicked in my code, the details are displayed. Within this details section, there are 2 links (previous, next) that allow navigation to the previous and next records. The issue arises when navigating to the next page from pagination – up ...

Transform the variable from a numerical value to a string if it is not null; otherwise, keep it as null

// Conditions: // If s is null and n is null, then result should be null // If s is null and n is 1, then result should be "1" // If s is "2" and n is null, then result should be "2" // If s is "2" and n is 1, then result should be "2" const s: string | nu ...

Windows drive letter casing error when using Yarn and NextJS

Today, I set up a fresh project using Yarn and NextJS on my Windows computer. When I try to start the project, I encounter an error stating that the casing is "invalid" for the project directory. The specific errors I am facing are: Invalid casing detecte ...

How to display a TypeScript map in a React JSX component

I am currently working with a map object: const myMap = new Map<number,string>([ [10, "text1"], [15, "text2"], [20, "text3"] ]) Could anyone provide me with guidance on how to iterate over this map in React JSX ...

Solving issues with event handling through addEventListener within a functional component in React

I am working on a React component that includes an input field and I want to implement a character autocompletion feature. The idea is that when a user types " or ', the same character should be automatically added again, with the cursor placed i ...

The unholy trinity of RxJS, Typescript, and the infamous 'Type Mismatch' error message

It's clear that I'm overlooking something obvious. The pseudo code below works perfectly in production, but my IDE (IntelliJ IDEA) is throwing an error that I can't solve. I can suppress it with noinspection TypeScriptValidateTypes, but I re ...