我能够创建和操作Map
对象,但无权访问.keys()
或.values()
函数。
我怎么知道为什么呢?
let a = new Map([['a', 1], ['b', 2]]);
a.set('c', 3);
let myArray = a.keys();
我在keys()
下得到红色下划线。
错误:
[15:52:12] Error - typescript - src\...TruckDeliverySchedule.tsx(102,21): error TS2339: Property 'keys' does not exist on type 'Map<string, number>'.
我不确定还有什么其他意义。全新的javascript编程。
编辑:
"compilerOptions": {
"target": "es5",
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"jsx": "react",
"declaration": true,
"sourceMap": true,
"experimentalDecorators": true,
"skipLibCheck": true,
"typeRoots": [
"./node_modules/@types",
"./node_modules/@microsoft"
],
"types": [
"es6-promise",
"webpack-env"
],
"lib": [
"es5",
"dom",
//"es2015.collection" // removed
"es2015"
]
编辑2:
项目是为Sharepoint框架并使用Visual Studio代码而构建的。
当我尝试查看Map
的定义时,我将转到:
// Backward compatibility with --target es5
declare global {
interface Set<T> { }
interface Map<K, V> { }
interface WeakSet<T> { }
interface WeakMap<K extends object, V> { }
}
答案 0 :(得分:2)
在compilerOptions
文件的tsconfig.json
中,您具有:
"lib": [
"es5",
"dom",
"es2015.collection"
]
因此Map
是ECMAScript 2015中引入的,但是您明确地只包括es2015.collection
TypeScript库,而不是library for all of ECMAScript 2015。
es2015.iterable
库中提供了您缺少的特定方法。我建议,如果您要针对支持所有ES2015的环境,则应将es2015.collection
更改为es2015
,以便获得完整的内容,而不仅仅是其中的一部分。
希望有帮助。祝你好运!