HiveBrain v1.2.0
Get Started
← Back to all entries
patterntypescriptCritical

TypeScript Objects as Dictionary types as in C#

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
objectstypescripttypesdictionary

Problem

I have some JavaScript code that uses objects as dictionaries; for example a 'person' object will hold a some personal details keyed off the email address.

var people = { : };

adding   > "people[] = ;" 
getting  > "var data = people[];" 
deleting > "delete people[];"


Is it possible to describe this in Typescript? or do I have to use an Array?

Solution

In newer versions of typescript you can use:

type Customers = Record


In older versions you can use:

var map: { [email: string]: Customer; } = { };
map['foo@gmail.com'] = new Customer(); // OK
map[14] = new Customer(); // Not OK, 14 is not a string
map['bar@hotmail.com'] = 'x'; // Not OK, 'x' is not a customer


You can also make an interface if you don't want to type that whole type annotation out every time:

interface StringToCustomerMap {
    [email: string]: Customer;
}

var map: StringToCustomerMap = { };
// Equivalent to first line of above

Code Snippets

type Customers = Record<string, Customer>
var map: { [email: string]: Customer; } = { };
map['foo@gmail.com'] = new Customer(); // OK
map[14] = new Customer(); // Not OK, 14 is not a string
map['bar@hotmail.com'] = 'x'; // Not OK, 'x' is not a customer
interface StringToCustomerMap {
    [email: string]: Customer;
}

var map: StringToCustomerMap = { };
// Equivalent to first line of above

Context

Stack Overflow Q#13631557, score: 616

Revisions (0)

No revisions yet.