无法使用Map.Keys()函数

时间:2018-08-01 20:43:59

标签: javascript typescript

我能够创建和操作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> { }
}

1 个答案:

答案 0 :(得分:2)

compilerOptions文件的tsconfig.json中,您具有:

"lib": [
  "es5",
  "dom",
  "es2015.collection"
]

因此Map是ECMAScript 2015中引入的,但是您明确地只包括es2015.collection TypeScript库,而不是library for all of ECMAScript 2015es2015.iterable库中提供了您缺少的特定方法。我建议,如果您要针对支持所有ES2015的环境,则应将es2015.collection更改为es2015,以便获得完整的内容,而不仅仅是其中的一部分。

希望有帮助。祝你好运!