TypeScript Map:如何使用强类型?

时间:2016-06-18 07:36:03

标签: javascript typescript ecmascript-6

我无法使用Map强力键入typescript 1.8.10个对象。以下是core-js定义Map界面的摘录:

interface Map<K, V> {
    clear(): void;
    delete(key: K): boolean;
    forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
    get(key: K): V;
    has(key: K): boolean;
    set(key: K, value?: V): Map<K, V>;
    size: number;
}

我想创建一个使用字符串键的地图,并且只存储形状为{name:string,price:number}的值。我尝试用以下方式声明我的对象:

let oMap:Map<string,{name:string,price:number}> = new Map();

但是,编译器抛出错误TS2322: Type 'Map<{}, {}>' is not assignable to type 'Map<string, { name: string; price: number; }>'。在打字稿中使用ES6 Map对象时,有没有办法利用强类型?

1 个答案:

答案 0 :(得分:14)

您需要向创建的service1提供泛型类型信息,如:

Map

之后你可以省略类型声明,将作业留给编译器:

let oMap:Map<string,{name:string,price:number}> = new Map<string,{name:string,price:number}>();