2016-12-05 5 views
1

Я пытаюсь использовать новый collection types of ES6 в своем проекте машинописного текста/реакции.ES6 Map.forEach не является функцией после компиляции машинописных файлов

interface MyComponentProps{ 
    myMap: Map<String, {isAvailable?: boolean}>, 
} 
... 
this.props.myMap.keys(); 

IntelliJ и Webpack может скомпилировать мой код без предупреждения, но я получил сообщение об ошибке во время выполнения в Chrome 55. this.props.myMap.forEach is not a function

tsconfig.json

{ 
"compilerOptions": { 
"moduleResolution": "node", 
"outDir": "./dist/", 
"sourceMap": true, 
"noImplicitAny": true, 
"module": "commonjs", 
"target": "es6", 
"jsx": "react" 
    } 
} 

package.json

{ 
"name": "cocktails-db", 
"version": "1.0.0", 
"description": "", 
"main": "index.js", 
"scripts": { 
    "production": "webpack -p", 
    "start": "webpack-dev-server -d", 
    "test": "echo \"Error: no test specified\" && exit 1" 
}, 
"author": "", 
"license": "ISC", 
"dependencies": { 
    "axios": "^0.15.3", 
    "elasticsearch": "^12.1.0", 
    "react": "^15.4.0", 
    "react-bootstrap": "^0.30.7", 
    "react-dom": "^15.4.0", 
    "react-router": "^3.0.0", 
    "react-router-bootstrap": "^0.23.1", 
    "react-select2-wrapper": "^1.0.4-beta1" 
}, 
"devDependencies": { 
    "@types/axios": "^0.9.34", 
    "@types/bootstrap": "^3.3.32", 
    "@types/elasticsearch": "^5.0.1", 
    "@types/react": "^0.14.51", 
    "@types/react-bootstrap": "0.0.37", 
    "@types/react-dom": "^0.14.19", 
    "@types/react-router": "^2.0.41", 
    "@types/react-router-bootstrap": "0.0.27", 
    "html-webpack-plugin": "^2.24.1", 
    "ts-loader": "^1.2.2", 
    "typescript": "^2.0.10", 
    "webpack": "^1.13.3", 
    "webpack-dev-server": "^1.16.2" 
} 
} 

Я Я могу использовать тип карты, когда вы набираете ее в консоли браузера, поэтому я думаю, что это проблема создания машинописных текстов. Я где-то пропал без вести?

--- Редактировать --- На самом деле это была проблема с инициализацией, но я до сих пор не знаю, почему я не получаю уведомления о типе обратной связи/типа.

Это, как я называю'MyComponent'

myMap : any; 
... 
this.myMap=""; 
... 
render() { 
     return (
      <div> 
       <MyComponent myMap={this.myMap}> </MyComponent> 
      </div> 
     ) 
+0

Пожалуйста, добавьте более релевантный код. Вы уверены, что проходите карту? –

+0

Ожидается, что полинаполненные функции ES6 будут заполнены полифорами. И очевидно, что это не так в вашем случае. – estus

+0

@estus нет необходимости в пополнении, хром поддерживает объект «Карта» –

ответ

0

Проблема решена; Это не имеет ничего общего с проблемой компиляции, а потому, что неправильная инициализация объекта.