2015-11-30 2 views
1

это мой TS код:как определить требует функции в машинописи

import AddToCartBtn from "./AddToCartBtn"; 
import * as React from "react"; 
import * as ReactDOM from "react-dom"; 

declare var document:Document; 
var _handler : __React.MouseEventHandler; 

ReactDOM.render(<AddToCartBtn clickHandler={_handler}></AddToCartBtn>, document.getElementById("bd")); 

и компилировать JS, как:

define(["require", "exports", "./AddToCartBtn", "react", "react-dom"], function (require, exports, AddToCartBtn_1, React, ReactDOM) { 
    var _handler; 
    ReactDOM.render(React.createElement(AddToCartBtn_1.default, {"clickHandler": _handler}), document.getElementById("bd")); 
}); 

это является функцией определения и не работает. как мне получить требуемую функцию?

+0

можете ли вы разместить свой tsconfig или параметры компилятора, которые вы используете? – FlorianTopf

+0

{ "compilerOptions": { "целевые": "ES5", "noImplicitAny": ложные, "модуль" : "драм", "removeComments": ложь, "sourceMap": правда, «JSX ":" реагировать " } } – Zhaowei

ответ

1

Вы компилируете с --module (или -m), установленным в amd. Вероятно, вы должны использовать commonjs.

0

Ожидается функция определения. Однако вам нужно, чтобы в ней была определена глобальная область действия. В зависимости от вашей установки существуют различные способы сделать это. Я всегда использовал описанный ниже подход:

Обычно это может быть сделано путем импорта запроса через тег скрипта в вашем html (учитывая использование реакции, я предполагаю, что вы нацеливаете браузер). Это предполагает, что ваш файл ts компилируется в main.js. Этот пример непосредственно из RequireJS docs

<script data-main="main" src="require.js"></script> 

Другой вариант заключается в вызове требуется в другой тег сценария следующее, что:

<script src="require.js"></script> 
<script> 
    require(["main"]); 
</script> 
0

Просто включите ваши tsconfig.json настройки для этого:

{ "compilerOptions": { "target": "es5", "noImplicitAny": false, "module": "commonjs", "removeComments": false, "sourceMap": true, "jsx": "react" } } 

Тогда вы установите систему модулей на commonjs, которая является модульной системой по умолчанию для машинописного текста.

Смежные вопросы