আমি আমার নিজস্ব এবং তৃতীয় পক্ষ উভয় গ্রন্থাগার ব্যবহার করছি। আমি দেখতে পাচ্ছি "টাইপিংস" ডিরেক্টরিটিতে জ্যাকারি এবং উইনআরটি-র জন্য কিছু রয়েছে ... তবে সেগুলি কীভাবে তৈরি করা হয়?
আমি আমার নিজস্ব এবং তৃতীয় পক্ষ উভয় গ্রন্থাগার ব্যবহার করছি। আমি দেখতে পাচ্ছি "টাইপিংস" ডিরেক্টরিটিতে জ্যাকারি এবং উইনআরটি-র জন্য কিছু রয়েছে ... তবে সেগুলি কীভাবে তৈরি করা হয়?
উত্তর:
আপনার কাছে প্রশ্নাবলির গ্রন্থাগারের উপর নির্ভর করে কয়েকটি বিকল্প উপলব্ধ রয়েছে, এটি কীভাবে লেখা এবং আপনি কী স্তরের নির্ভুলতার সন্ধান করছেন। আসুন অপশনগুলির পর্যালোচনা করা যাক মোটামুটি আকাঙ্ক্ষার ক্রমবর্ধমান ক্রমে।
সর্বদা সর্বদা সংজ্ঞাযুক্ত টাইপযুক্ত ( https://github.com/DefinitelyType // DefinitelyType ) চেক করুন । এটি একটি সম্প্রদায়ের রেপো যা আক্ষরিক হাজার .d.ts ফাইলগুলিতে পূর্ণ এবং সম্ভবত আপনি যে জিনিসটি ব্যবহার করছেন সেটি ইতিমধ্যে রয়েছে। আপনার টাইপসন্ধান ( https://microsoft.github.io/TypeSearch/ ) যাচাই করা উচিত যা এনপিএম-প্রকাশিত .d.ts ফাইলগুলির জন্য একটি অনুসন্ধান ইঞ্জিন; এটির ডেফিনিটি টাইপযুক্তের চেয়ে কিছুটা বেশি সংজ্ঞা থাকবে। কয়েকটি মডিউলগুলি তাদের এনপিএম বিতরণের অংশ হিসাবে তাদের নিজস্ব সংজ্ঞাও শিপিং করছে, তাই আপনার নিজের লেখার চেষ্টা করার আগে যদি এটি তেমন হয় তবে তাও দেখুন।
টাইপস্ক্রিপ্ট এখন --allowJs
পতাকাটিকে সমর্থন করে এবং .js ফাইলে আরও জেএস-ভিত্তিক সূচনা তৈরি করবে। আপনি আপনার সংকলনের মধ্যে .js ফাইলটি --allowJs
সেটিং সহ চেষ্টা করে দেখতে পারেন যে এটি আপনাকে যথেষ্ট ভাল টাইপের তথ্য দেয় কিনা। টাইপস্ক্রিপ্ট এই ফাইলগুলিতে ইএস 5-স্টাইলের ক্লাস এবং জেএসডোক মন্তব্যের মতো জিনিসগুলিকে স্বীকৃতি দেবে, তবে লাইব্রেরিটি যদি এক অদ্ভুত উপায়ে নিজেকে আরম্ভ করে তবে তা ছড়িয়ে পড়ে।
--allowJs
যদি --allowJs
আপনি শালীন ফল পাওয়া যায় এবং আপনি একটি ভাল সংজ্ঞা ফাইল নিজেকে, আপনি একত্রিত করতে পারেন লিখতে চান --allowJs
সঙ্গে --declaration
লাইব্রেরির ধরনের এ টাইপ করা বিষয় "বেস্ট অনুমান" দেখতে। এটি আপনাকে একটি শালীন সূচনা পয়েন্ট দেবে, এবং জাসডোকের মন্তব্যগুলি ভালভাবে লিখিত থাকলে এবং সংকলক সেগুলি সন্ধান করতে সক্ষম হলে হস্ত-লিখিত ফাইলের মতোই ভাল।
যদি --allowJs
কাজ না করে তবে আপনি একটি সূচনা পয়েন্ট পেতে dts-gen ( https://github.com/Mic Microsoft/dts-gen ) ব্যবহার করতে চাইতে পারেন । এই সরঞ্জামটি সমস্ত উপলব্ধ বৈশিষ্ট্যকে সঠিকভাবে গণনা করতে অবজেক্টের রানটাইম আকার ব্যবহার করে। প্লাস সাইডে এটি খুব নির্ভুল হতে থাকে, তবে সরঞ্জামটি অতিরিক্ত ধরণের পপুলেশন করতে JSDoc মন্তব্যগুলি স্ক্র্যাপিং সমর্থন করে না। আপনি এভাবে চালান:
npm install -g dts-gen
dts-gen -m <your-module>
এটি your-module.d.ts
বর্তমান ফোল্ডারে উত্পন্ন করবে ।
আপনি যদি কেবল এটি সমস্ত পরে করতে চান এবং কিছুক্ষণের জন্য টাইপ ছাড়াই যান তবে টাইপস্ক্রিপ্ট ২.০ এ আপনি এখন লিখতে পারেন
declare module "foo";
আপনি দেওয়া হবে ধরনের সঙ্গে মডিউল । আপনার যদি গ্লোবাল থাকে তবে আপনি পরে ডিল করতে চান, কেবল লিখুনimport
"foo"
any
declare const foo: any;
যা আপনাকে একটি foo
পরিবর্তনশীল দেবে।
--declarations
উভয়ই উত্পন্ন করে , যার অর্থ আপনার কেবলমাত্র একটি একটি সংকলন চালানো দরকার। .js
.d.ts
--allowJs
--declaration
বিকল্পগুলির সাথে একত্রিত করা যায় না (টাইপস্ক্রিপ্ট 1.8 এবং 2.0 তে পরীক্ষা করা)। আমি চেষ্টা করলে, আমি পেয়েছি:error TS5053: Option 'allowJs' cannot be specified with option 'declaration'
হয় আপনি ব্যবহার করতে পারেন tsc --declaration fileName.ts
রায়ান মত বর্ণনা করে, অথবা আপনি নির্দিষ্ট করতে পারেন declaration: true
অধীনে compilerOptions
আপনার tsconfig.json
অভিমানী যদি আপনি ইতিমধ্যেই একটি ছিল করেছি tsconfig.json
আপনার প্রকল্পের অধীনে।
tsc --declaration test.ts
করি তবে Cannot find name...
যে ধরণের জন্য আমি একটি ডিকোলেশন ফাইল তৈরি করতে চাইছি তার জন্য ত্রুটিটি পেয়েছি :) সুতরাং আমি ধরণেরগুলি প্রকাশ করার আগে সেগুলির আমার কী প্রয়োজন?
declaration: true
আপনার tsconfig.json
ফাইলটিতে যুক্ত করার চেষ্টা করতে পারেন ?
এটির সাথে মোকাবিলা করার সর্বোত্তম উপায় (যদি কোনও ডিক্লেয়ারেশন ফাইল ডেফিনিটি টাইপডে পাওয়া না যায় ) তবে সম্পূর্ণ লাইব্রেরির পরিবর্তে কেবলমাত্র আপনি যে জিনিসগুলি ব্যবহার করেন সেগুলির জন্য ডকোলেশন লিখতে হয়। এটি কাজটি অনেক হ্রাস করে - এবং অতিরিক্তভাবে সংকলকটি অনুপস্থিত পদ্ধতিগুলির বিষয়ে অভিযোগ করে সহায়তা করার জন্য রয়েছে।
রায়ান যেমন বলেছে, টিএসসি সংকলকটিতে একটি সুইচ রয়েছে --declaration
যা একটি .d.ts
ফাইল থেকে একটি .ts
ফাইল উত্পন্ন করে । আরও মনে রাখবেন যে (বাগগুলি ব্যতীত) টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্ট সংকলন করতে সক্ষম হবেন বলে মনে করা হচ্ছে, সুতরাং আপনি বিদ্যমান জাভাস্ক্রিপ্ট কোডটি টিএসসি সংকলককে পাস করতে পারেন।
http://channel9.msdn.com/posts/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript এ 00:33:52 তে বর্ণিত হিসাবে তারা ওয়েবআইডিএল এবং উইনআরটি মেটাডেটা রূপান্তর করার জন্য একটি সরঞ্জাম তৈরি করেছিল টাইপস্ক্রিপ্ট d.ts
এখানে এমন কিছু পাওয়ারশেল যা একটি একক টাইপসক্রিপ্ট সংজ্ঞা ফাইলটি একটি লাইব্রেরি তৈরি *.js
করে যেখানে আধুনিক জাভাস্ক্রিপ্ট সহ একাধিক ফাইল অন্তর্ভুক্ত রয়েছে ।
প্রথমে সমস্ত এক্সটেনশান এতে পরিবর্তন করুন .ts
।
Get-ChildItem | foreach { Rename-Item $_ $_.Name.Replace(".js", ".ts") }
দ্বিতীয়ত, সংজ্ঞা ফাইলগুলি তৈরি করতে টাইপস্ক্রিপ্ট সংকলকটি ব্যবহার করুন। সংকলক ত্রুটিগুলির একটি গুচ্ছ থাকবে, তবে আমরা সেগুলি উপেক্ষা করতে পারি।
Get-ChildItem | foreach { tsc $_.Name }
অবশেষে, সমস্ত *.d.ts
ফাইল এক সাথে সংযুক্ত করুন index.d.ts
, import
বিবৃতিগুলি সরিয়ে এবং default
প্রতিটি রফতানি বিবৃতি থেকে অপসারণ করুন ।
Remove-Item index.d.ts;
Get-ChildItem -Path *.d.ts -Exclude "Index.d.ts" | `
foreach { Get-Content $_ } | `
where { !$_.ToString().StartsWith("import") } | `
foreach { $_.Replace("export default", "export") } | `
foreach { Add-Content index.d.ts $_ }
এটি একক, ব্যবহারযোগ্য index.d.ts
ফাইলের সাথে শেষ হয় যার মধ্যে অনেকগুলি সংজ্ঞা রয়েছে।
আপনার নিজের লাইব্রেরি তৈরি করার সময়, আপনি (টাইপস্ক্রিপ্ট সংকলক) কমান্ডটি *.d.ts
ব্যবহার করে ফাইলগুলি তৈরি করতে পারেন tsc
: (ধরে নিই যে আপনি আপনার লাইব্রেরিটি dist/lib
ফোল্ডারে তৈরি করছেন)
tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly
-d
( --declaration
): *.d.ts
ফাইলগুলি উত্পন্ন করে--declarationDir dist/lib
: উত্পন্ন ঘোষণা ফাইলের জন্য আউটপুট ডিরেক্টরি।--declarationMap
: প্রতিটি সম্পর্কিত '.d.ts' ফাইলের জন্য উত্স ম্যাপ তৈরি করে।--emitDeclarationOnly
: কেবল '.d.ts' ঘোষণার ফাইলগুলি নির্গত করে। (সংকলিত জেএস নেই)( সমস্ত কমান্ড লাইন সংকলক বিকল্পগুলির জন্য ডক্স দেখুন )
বা উদাহরণস্বরূপ আপনার package.json
:
"scripts": {
"build:types": "tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly",
}
এবং তারপরে চালান: yarn build:types
(বা npm run build:types
)
d.ts
ফাইলগুলি তৈরি করতে পারি এবং ইন্টারফেসগুলি ব্যবহার করতে সক্ষম হতে পারি তা এখনও বুঝতে পারি না । আপনার কোন উদাহরণ আছে?
*.d.ts
ফাইলগুলি তৈরি করে dist/lib
ফোল্ডারে রাখবে । tsconfig.json
আপনার প্রকল্পের মূলে আপনার কোনও ফাইলের দরকার আছে , তবে প্রকল্পটি যেভাবেই হোক কাজ করার জন্য সেখানে থাকা উচিত।
আমি আপনার 3 য় পক্ষের জেএস লাইব্রেরির একটি বিদ্যমান ম্যাপিং সন্ধান করব যা স্ক্রিপ্ট # বা শার্পকিট সমর্থন করে। এই সি # টু .জেএস ক্রস সংকলকগুলির ব্যবহারকারীরা এখন আপনার যে সমস্যার মুখোমুখি হবেন এবং তারা আপনার তৃতীয় পক্ষের লিবি স্ক্যান করতে এবং কঙ্কাল সি # শ্রেণিতে রূপান্তর করতে একটি মুক্ত উত্স প্রোগ্রাম প্রকাশ করেছে। যদি তাই হয় তবে স্ক্যানার প্রোগ্রামটি সি # এর জায়গায় টাইপস্ক্রিপ্ট তৈরি করতে হ্যাক করুন।
এটি ব্যর্থ হয়ে, আপনার তৃতীয় পক্ষের লাইবের জন্য সিএস পাবলিক ইন্টারফেসটি টাইপস্ক্রিপ্ট সংজ্ঞায় অনুবাদ করা সোর্স জাভাস্ক্রিপ্ট পড়ে এটি করার চেয়ে সহজ হতে পারে।
আমার বিশেষ আগ্রহ সেঞ্চার এক্সটجيএস আরআইএ কাঠামো এবং আমি জানি স্ক্রিপ্ট # বা শার্পকিটের জন্য সি # ব্যাখ্যা জেনারেট করার জন্য প্রকল্পগুলি প্রকাশিত হয়েছে