यह मेरा 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"));
});
यह एक परिभाषित कार्य है और काम नहीं करता है। मुझे एक फ़ंक्शन की आवश्यकता कैसे है?
3 जवाब
आप amdule (या -m) के साथ amd पर सेट कर रहे हैं। आपको शायद आमजन का उपयोग करना चाहिए।
परिभाषित फ़ंक्शन अपेक्षित है। हालाँकि इसके कार्य करने के लिए आपको वैश्विक दायरे में परिभाषित करने की आवश्यकता है। आपके सेटअप के आधार पर, इसे बनाने के विभिन्न तरीके हैं। मैंने हमेशा नीचे सूचीबद्ध दृष्टिकोण का उपयोग किया है:
आमतौर पर यह आपके html में एक स्क्रिप्ट टैग के माध्यम से आवश्यकता को आयात करके किया जा सकता है (प्रतिक्रिया का उपयोग, मैं मान रहा हूं कि आप ब्राउज़र को लक्षित कर रहे हैं)। यह मानती है कि आपकी ts फ़ाइल main.js. को संकलित करती है यह उदाहरण सीधे रिक्जेस्ट डॉक्स से है।
<script data-main="main" src="require.js"></script>
एक अन्य विकल्प के लिए एक अलग स्क्रिप्ट टैग में कॉल की आवश्यकता होती है:
<script src="require.js"></script>
<script>
require(["main"]);
</script>
बस अपनी tsconfig.json
सेटिंग इस पर स्विच करें:
{ "compilerOptions": { "target": "es5", "noImplicitAny": false, "module": "commonjs", "removeComments": false, "sourceMap": true, "jsx": "react" } }
फिर आपने मॉड्यूल सिस्टम को commonjs
सेट किया जाएगा जो टाइपस्क्रिप्ट के लिए डिफ़ॉल्ट मॉड्यूल सिस्टम है।
संबंधित सवाल
नए सवाल
typescript
टाइपस्क्रिप्ट जावास्क्रिप्ट का एक टाइप किया हुआ सुपरसेट है जो सादे जावास्क्रिप्ट को संकलित करता है। यह जावास्क्रिप्ट में वैकल्पिक प्रकार, कक्षाएं, इंटरफेस और मॉड्यूल जोड़ता है। यह टैग टाइपस्क्रिप्ट के लिए विशिष्ट प्रश्नों के लिए है। इसका उपयोग सामान्य जावास्क्रिप्ट प्रश्नों के लिए नहीं किया जाता है।