কেন এটি কাজ করে না
import * as MC from './MyClass';
এটি ES6 / ES2015- স্টাইল import
সিনট্যাক্স। এর সঠিক অর্থ হ'ল "মডিউল নামস্থান স্থানটি লোড হওয়া ./MyClass
এবং এটি স্থানীয়ভাবে ব্যবহার করুন MC
"। উল্লেখযোগ্যভাবে, "মডিউল নেমস্পেস অবজেক্ট " বৈশিষ্ট্যযুক্ত কেবল একটি সরল বস্তু নিয়ে গঠিত। কোনও ES6 মডিউল অবজেক্টটি কোনও ফাংশন হিসাবে বা এর সাথে ডাকা যাবে নাnew
।
এটি আবার বলার জন্য: কোনও ES6 মডিউল নেমস্পেস অবজেক্টটি কোনও ফাংশন হিসাবে বা এর সাথে ডাকা যাবে না new
।
আপনি মডিউল থেকে যে জিনিসটি import
ব্যবহার করছেন * as X
তা কেবলমাত্র বৈশিষ্ট্যগুলিতেই সংজ্ঞায়িত করা হয়েছে। ডাউনলেভেল্ড কমনজেএসে এটি পুরোপুরি সম্মানিত নাও হতে পারে তবে টাইপস্ক্রিপ্ট আপনাকে বলে দিচ্ছে যে স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত আচরণটি কী।
কি কাজ করে?
এই মডিউলটি ব্যবহার করতে আপনাকে সাধারণ জেএস-স্টাইল আমদানি বাক্য গঠন ব্যবহার করতে হবে:
import MC = require('./MyClass');
আপনি যদি উভয় মডিউল নিয়ন্ত্রণ করেন তবে আপনি এর export default
পরিবর্তে ব্যবহার করতে পারেন :
MyClass.ts
export default class MyClass {
constructor() {
}
}
MyConsumer.ts
import MC from './MyClass';
আমি এ সম্পর্কে দুঃখিত; বিধিগুলি বোবা হয়।
ইএস 6 আমদানি সিনট্যাক্সটি ব্যবহার করে ভাল লাগত তবে এখন আমাকে এই import MC = require('./MyClass');
জিনিসটি করতে হবে ? এটা 2013! পঙ্গু! তবে দুঃখ প্রোগ্রামিংয়ের একটি সাধারণ অঙ্গ। Kübler-Ross মডেল: স্বীকৃতি: পাঁচ মঞ্চে লাফ দিন।
এখানে টাইপস্ক্রিপ্ট আপনাকে বলছে এটি কাজ করে না, কারণ এটি কাজ করে না। হ্যাকগুলি রয়েছে ( এটির namespace
কাছে একটি ঘোষণাকে যুক্ত করার পক্ষে MyClass
এটি জনপ্রিয় কাজ করার উপায়) এবং এগুলি আজ আপনার বিশেষ ডাউনলভেলিং মডিউল বান্ডলারে (যেমন রোলআপ) কাজ করতে পারে তবে এটি মায়াময়। বন্যে এখনও কোনও ES6 মডিউল বাস্তবায়ন হয়নি, তবে এটি চিরদিনের জন্য সত্য হবে না।
আপনার ভবিষ্যতের স্ব চিত্র করুন, একটি ঝরঝরে নেটিভ ইএস 6 মডিউল বাস্তবায়ন চালানোর চেষ্টা করছেন এবং এটি ES6 স্পষ্টভাবে না করে এমন কিছু করার জন্য ES6 সিনট্যাক্স ব্যবহার করে নিজেকে বড় ব্যর্থতার জন্য প্রস্তুত করেছেন তা সন্ধান করুন ।
আমি আমার অ-মানক মডিউল লোডারটির সুবিধা নিতে চাই
হতে পারে আপনার কাছে এমন একটি মডিউল লোডার রয়েছে যা "সহায়কভাবে" default
রফতানি তৈরি করে যখন কোনটিই উপস্থিত না থাকে। আমি বলতে চাইছি, লোকেরা কোনও কারণে মানদণ্ড তৈরি করে তবে মানদণ্ডগুলি উপেক্ষা করা কখনও কখনও মজাদার এবং আমরা ভাবতে পারি যে এটি করার জন্য দুর্দান্ত জিনিস।
MyConsumer.ts এ এতে পরিবর্তন করুন:
import A from './a';
এবং allowSyntheticDefaultImports
কমান্ড-লাইন নির্দিষ্ট করুন বাtsconfig.json
বিকল্প ।
মনে রাখবেন যে allowSyntheticDefaultImports
আপনার কোডের রানটাইম আচরণটি মোটেও বদলাবে না। এটি কেবলমাত্র একটি পতাকা যা টাইপস্ক্রিপ্টকে বলে যে আপনার মডিউল লোডার default
যখন উপস্থিত নেই তখন রফতানি তৈরি করে । এটি আপনার কোডটি নোডেজগুলিতে জাজগতভাবে তৈরি করবে না যখন এটি আগে হয়নি।
javascript
একটি প্রাথমিক ট্যাগ এবং ছুটি হিসেবেecmascript-6
, কারণ এখানে প্রাথমিক ট্যাগ হয়typescript
। প্রশ্নটি ভুলভাবে ধরেছে যেexport =
(একটি টিএস বৈশিষ্ট্য) যুক্ত করা যেতে পারেimport ... from
, যদিও এটি যুক্ত করা উচিতimport =
। এটি মূলত ইএস 6 মডিউল আমদানি / এক্সপোর্ট বনাম সিজেএস / এএমডি।