.D.ts ছাড়া টাইপস্ক্রিপ্ট থেকে একটি বাহ্যিক নন-টাইপ স্ক্রিপ্ট লাইব্রেরি কীভাবে ব্যবহার করবেন?


100

আমি এগুলি আমার .html ফাইলে সংজ্ঞায়িত করেছি:

<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>

তারপরে টেস্ট.জেএসে:

 var myTree = Tree.tree({})

তবে টাইপস্ক্রিপ্টের ত্রুটিগুলি বলে চলেছে: "'গাছ' নামটি পাওয়া যায় না"

আমি টেস্ট.জেএস ফাইলের শীর্ষে সংকলন --module amdএবং স্থাপনের চেষ্টা করেছি import Tree = require("model/tree");, তবে এটি আবারও ত্রুটিযুক্ত হয়েছে: Cannot find external module 'model/tree'.তবে এটি স্পষ্টতই একটি বৈধ আমদানি হওয়া উচিত, এটির সংজ্ঞা কোথায় দেওয়া হয়েছিল তা এখানে দেখুন: https://github.com/marmelab/tree .js / blob / master / src / main.js

আমি যে একক বহিরাগত জাভাস্ক্রিপ্ট ফাইলটি ব্যবহার করতে চাই তার জন্য আমি .d.ts ফাইল লিখতে চাই না , টাইপসক্রিপটি কি আমাকে গুরুত্ব সহকারে করতে চায়?


4
আপনি .d.ts ফাইল লিখতে হবে না । দেখুন stackoverflow.com/questions/27273489/... উদাহরণের জন্য
xmojmr

আকর্ষণীয়, এটি এখনও আমার অবজেক্টগুলি ঘোষণার প্রয়োজন হবে। আমি ছাপে ছিলাম যে টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ। আমার ধারণা এটি টাইপসক্রিপ্টের দৃষ্টিকোণ থেকে বোঝা যায়, এটি কোনওভাবে কোডটি পড়া দরকার এবং যদি এর কোনও ভাল রেফারেন্স না থাকে তবে এটি ত্রুটি হবে।
ব্লব

উত্তর:


124

আমি যে একক বহিরাগত জাভাস্ক্রিপ্ট ফাইলটি ব্যবহার করতে চাই তার জন্য আমি .d.ts ফাইল লিখতে চাই না, টাইপসক্রিপ্টটি কি আমার কাছে গুরুত্ব সহকারে চায়?

না। সবচেয়ে সহজ / দ্রুত সমাধানটি কেবল এটিই বলা যায় যে এখানে কিছু পরিবর্তনশীল Treeরয়েছে। এটি এতটা সহজ:

declare var Tree:any; // Magic
var myTree = Tree.tree({})

টাইপসিকিটি টাইপস্ক্রিপ্টের একটি স্লাইডিং স্কেল। এই ক্ষেত্রে আপনি কেবলমাত্র সংকলককে বলছেন যে এখানে এমন কিছু আছে Treeযা আপনি পরিচালনা করবেন এবং এটি উপস্থিত রয়েছে তার বাইরে বেশি প্রকারের যত্ন নেবেন না ।

আরও

আইএমএইচও: লাইনটি declare var Tree:any;অন্যান্য জেএস ভেরিফিকেশন সরঞ্জামগুলির তুলনায় খুব সরল বাক্য গঠন যা আপনার কোডটিতে উপস্থিত নয় এমন ভেরিয়েবলগুলির আপনার ব্যবহারের ঘোষণা দেওয়ার জন্য আপনাকে লিখতে চাইবে।

হালনাগাদ

interface ITree {
    .. further methods and properties...
}

interface ITreeFactory {
    tree(input: { [key: string]: any }): Itree
};

declare var Tree: ITreeFactory; // magic...

আমি যখন এই পদ্ধতিটি ব্যবহার করছিলাম তখন এটি আমার জন্য অভিযোগ করেছিল। অ্যান্টন নীচে নীচে নির্ধারিত পদ্ধতিটি আমাকে ব্যবহার করতে হয়েছিল। আপনার মাইলেজ যদিও আলাদা হতে পারে! উত্তরের জন্য বাসরত ধন্যবাদ।
টিজ

আপনি আরও ভাল ইন্টেলিজেন্স সরবরাহ করবে এমন কোনওটির পরিবর্তে ইন্টারফেস হিসাবে প্রকারটি নির্দিষ্ট করতে পারেন।
আকাশ কাভা

24

আপনি নিজেকে 'আবশ্যক' সংজ্ঞায়িত করতে পারেন এবং টাইপস্ক্রিপ্টের অননুমোদিত এমডি-নির্ভরতা বৈশিষ্ট্যটি ব্যবহার করতে পারেন:

/// <amd-dependency path="model/tree" />
declare var require:(moduleId:string) => any;
var Tree = require("model/tree");

'এমডি-নির্ভরতা' নির্দেশনাটি সংকলককে উত্পন্ন কোডটিতে "সংজ্ঞায়িত" যুক্তিগুলিকে আপনার মডিউল অন্তর্ভুক্ত করার জন্য বলবে: এখানে একটি নমুনা দেখুন

আপনি একটি খুব ভাল নিবন্ধও পরীক্ষা করতে পারেন যা কীভাবে প্রয়োজনীয় জেএস সহ টাইপস্ক্রিপ্ট ব্যবহার করবেন তা ব্যাখ্যা করে।

তবে মনে রাখবেন যে আপনার বিদ্যমান কোডের জন্য যথাযথ টাইপস্ক্রিপ্ট সংজ্ঞা না লিখে আপনাকে কোনও প্রকারের তথ্য সরবরাহ করা হবে না এবং তাই আপনি ধরণের সুরক্ষা চেক, সরঞ্জামগুলিতে উন্নত কোড সমাপ্তি ইত্যাদি পাবেন না। সুতরাং, আপনার 'ট্রি' আসলে 'যেকোন' টাইপের হবে এবং অন্য টিএস কোডের অভ্যন্তরে ডায়নামিক জেএস টুকরা হবে।


ওয়েবপ্যাক ব্যবহার করার সময় দুর্দান্ত ধারণা নেই, ওয়েবপ্যাকটি ট্রান্সপ্লের করার সময় এই মডিউলটি উপস্থিত থাকতে হবে ...
আকাশ কাভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.