我在输入 Map
时遇到问题带有 typescript 1.8.10
的对象.这是 core-js
的摘录定义 map 接口(interface):
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
typescript 中的对象?
最佳答案
您需要像这样向创建的 Map
提供通用类型信息:
let oMap:Map<string,{name:string,price:number}> = new Map<string,{name:string,price:number}>();
然后你可以省略类型声明,把工作留给编译器:
// oMap is correctly inferred to be Map<string,{name:string,price:number}>
let oMap = new Map<string,{name:string,price:number}>();
关于javascript - 使用强类型 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37894517/