'my-app-name/services'নিম্নলিখিত আমদানির মতো লাইন এড়াতে আমি কীভাবে কিছু উপস্থাপন করতে পারি ?
import {XyService} from '../../../services/validation/xy.service';
'my-app-name/services'নিম্নলিখিত আমদানির মতো লাইন এড়াতে আমি কীভাবে কিছু উপস্থাপন করতে পারি ?
import {XyService} from '../../../services/validation/xy.service';
উত্তর:
টাইপস্ক্রিপ্ট ২.০ এ আপনি এখানে একটি baseUrlসম্পত্তি যুক্ত করতে পারেন tsconfig.json:
{
"compilerOptions": {
"baseUrl": "."
// etc...
},
// etc...
}
তারপরে আপনি সবকিছু আমদানি করতে পারেন যেমন আপনি বেস ডিরেক্টরিতে ছিলেন:
import {XyService} from "services/validation/xy.service";
এর উপরে, আপনি একটি pathsসম্পত্তি যুক্ত করতে পারেন , যা আপনাকে কোনও প্যাটার্নের সাথে মেলে ম্যাপ করার অনুমতি দেয়। উদাহরণ স্বরূপ:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"services/*": [
"services/validation/*"
]
}
// etc...
},
// etc...
}
যা আপনাকে এখান থেকে এটিকে যে কোনও জায়গা থেকে আমদানির অনুমতি দেয়:
import {XyService} from "services/xy.service";
সেখান থেকে, আপনাকে এই আমদানির নামগুলি সমর্থন করতে আপনি যে কোনও মডিউল লোডার ব্যবহার করছেন তা কনফিগার করতে হবে। এই মুহুর্তে টাইপস্ক্রিপ্ট সংকলকটি স্বয়ংক্রিয়ভাবে এগুলি ম্যাপ করে বলে মনে হচ্ছে না।
আপনি গিথুব সংখ্যায় এ সম্পর্কে আরও পড়তে পারেন । rootDirsএকাধিক প্রকল্প ব্যবহার করার সময় দরকারী এমন একটি সম্পত্তিও রয়েছে।
আমি খুঁজে পেয়েছি এটি "ব্যারেল" ব্যবহার করে আরও সহজ করা যায় ।
index.tsফাইল তৈরি করুন।উদাহরণ
আপনার ক্ষেত্রে, প্রথমে একটি ফাইল তৈরি করুন my-app-name/services/validation/index.ts। এই ফাইলে, কোডটি রাখুন:
export * from "./xy.service";
তারপরে একটি ফাইল তৈরি করুন my-app-name/services/index.tsএবং এই কোডটি রাখুন:
export * from "./validation";
এখন আপনি আপনার পরিষেবাটি এর মতো ব্যবহার করতে পারেন (অন্তর্ভুক্ত index):
import {XyService} from "../../../services";
এবং একবার আপনার সেখানে একাধিক ফাইল থাকলে এটি আরও সহজ হয়ে যায়:
import {XyService, MyOtherService, MyOtherSerivce2} from "../../../services";
এই অতিরিক্ত ফাইলগুলি বজায় রাখা আরও সামান্য কাজ হিসাবে কাজ করা ( ব্যারেল-রক্ষণাবেক্ষণকারী ব্যবহার করে কাজটি মুছে ফেলা যায়) তবে আমি খুঁজে পেয়েছি যে এটি কম কাজ করে শেষ পর্যন্ত পরিশোধ করে। প্রধান ডিরেক্টরি কাঠামোর পরিবর্তনগুলি করা আরও সহজ এবং এটি আপনাকে যে পরিমাণ আমদানি করতে হয় তার সংখ্যা হ্রাস করে।
সতর্ক করা
এটি করার সময় আপনাকে কয়েকটি জিনিস দেখতে হবে এবং করতে পারবেন না:
import {XyService} from "../validation";)। আমি এটি পেয়েছি এবং প্রথম পয়েন্টটি আমদানি সংজ্ঞায়িত না হওয়ার ত্রুটির দিকে পরিচালিত করতে পারে।baseUrl'tsconfig.json' এর অবস্থানের সাথে সম্পর্কিত। সুতরাং আমাদের ক্ষেত্রে (কৌণিক প্রয়োগ) মানটি হওয়া উচিত "baseUrl": "./app",, যেখানে "অ্যাপ" অ্যাপ্লিকেশনটির মূল of
Tsconfig.json এ নীচে কনফিগারেশন ব্যবহার করা ভাল
{
"compilerOptions": {
"...": "reduced for brevity",
"baseUrl": "src",
"paths": {
"@app/*": ["app/*"]
}
}
}
Angতিহ্যগত উপায় কৌণিক 6 এর আগে:
`import {XyService} from '../../../services/validation/xy.service';`
এগুলিতে রিফ্যাক্টর করা উচিত:
import {XyService} from '@app/services/validation/xy.service
স্বল্প ও মধুর!
আমি এই প্রশ্নটি পেরিয়ে এসেছি। আমি জানি এখনই এটি ফিরে এসেছে তবে যে কেউ এটির সামনে আসার জন্য একটি সহজ উত্তর রয়েছে।
আমি কেবলমাত্র পেরিয়ে এসেছি কারণ আমি দীর্ঘদিন যা কিছু করছিলাম তা কাজ বন্ধ করে দিয়েছে এবং আমি ভাবছিলাম যে কৌণিক 7. এ কিছু পরিবর্তন হয়েছে কিনা, না এটি কেবল আমার নিজের কোড ছিল।
নির্বিশেষে tsconfig.jsonদীর্ঘ আমদানির পথ এড়াতে আমাকে কেবল একটি লাইন পরিবর্তন করতে হয়েছিল ।
{
"compilerOptions": {
"...": "simplified for brevity",
"baseUrl": "src"
}
}
উদাহরণ:
// before:
import {XyService} from '../../../services/validation/xy.service';
// after:
import { XyService } from 'app/services/validation/xy.service';
অ্যাংুলার-সিএলআই আসার পর থেকে এটি আমার পক্ষে বেশ কাজ করেছে।