TypeScript hashmap/dictionary interface

前端 未结 3 1352
庸人自扰
庸人自扰 2021-01-31 06:48

I\'m new to using TypeScript and I\'m trying to implement a hashmap/dictionary interface. So far I have

export interface IHash {
    [details: string] : string;
         


        
3条回答
  •  不思量自难忘°
    2021-01-31 07:31

    Just as a normal js object:

    let myhash: IHash = {};   
    
    myhash["somestring"] = "value"; //set
    
    let value = myhash["somestring"]; //get
    

    There are two things you're doing with [indexer: string] : string

    • tell TypeScript that the object can have any string-based key
    • that for all key entries the value MUST be a string type.

    You can make a general dictionary with explicitly typed fields by using [key: string]: any;

    e.g. age must be number, while name must be a string - both are required. Any implicit field can be any type of value.

    As an alternative, there is a Map class:

    let map = new Map(); 
    
    let key = new Object();
    
    map.set(key, "value");
    map.get(key); // return "value"
    

    This allows you have any Object instance (not just number/string) as the key.

    Although its relatively new so you may have to polyfill it if you target old systems.

提交回复
热议问题