بهینه سازی عملکرد با TypeScript – انجمن DEV

Summarize this content to 400 words in Persian Lang
در قلمرو TypeScript، بهینهسازی عملکرد فقط به اجرای سریعتر کد نیست، بلکه نوشتن راهحلهای قوی، مقیاسپذیر و قابل نگهداری است که در آزمون زمان مقاومت میکنند. این مقاله به جنبههای مختلف بهینهسازی عملکرد TypeScript با نکات، تکنیکها و مثالهایی میپردازد تا اطمینان حاصل شود که برنامههای شما هم کارآمد و مؤثر هستند.
1. بهینه سازی کامپایل TypeScript
تالیف افزایشیTypeScript از کامپایل افزایشی پشتیبانی می کند، جایی که فقط فایل های تغییر یافته دوباره کامپایل می شوند. این به طور چشمگیری زمان ساخت پروژه های بزرگ را کاهش می دهد.
نحوه فعال کردن:اضافه کنید “incremental”: true در شما tsconfig.json:
{
“compilerOptions”: {
“incremental”: true
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فایده: سرعت ساخت را به خصوص در خطوط لوله CI/CD افزایش می دهد.
با استفاده از –skipLibCheckاگر کتابخانههای خارجی را تغییر نمیدهید، از بررسی نوع آنها صرفنظر کنید:
{
“compilerOptions”: {
“skipLibCheck”: true
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چرا: با اجتناب از بررسی های اضافی نوع بسته های خارجی، زمان کامپایل را کاهش می دهد.
2. استنتاج نوع پیشرفته
استنتاج نوع TypeScript می تواند هم یک امتیاز و هم یک فاجعه باشد. استفاده بیش از حد از انواع صریح می تواند سرعت کامپایلر را کاهش دهد و کد شما را به هم بریزد.
مثال
const numbers = [1, 2, 3, 4]; // TypeScript infers `number[]`
const sum = numbers.reduce((acc, curr) => acc + curr, 0); // Infers `number`
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکته: برای استنتاج انواع به کامپایلر اعتماد کنید، مگر اینکه مشخص شود.
از انواع بیش از حد پیچیده اجتناب کنیدتا جایی که ممکن است برای کاهش بار شناختی و بهبود عملکرد تدوین، انواع را ساده کنید:
// Overly complex
type NestedArray<T> = T | NestedArray<T>[];
// Simplified for specific cases
type NestedNumberArray = number | NestedNumberArray[];
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. استفاده از انواع ابزار
TypeScript انواع ابزارهای داخلی مانند Pick، Omit، Partial، و Required. اینها می توانند کد شما را ساده کرده و قابلیت نگهداری را بهبود بخشند.
مثال: با استفاده از Omitبه جای حذف دستی خواص:
type User = {
id: number;
name: string;
email: string;
};
type UserWithoutEmail = Omit<User, ’email’>;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
افزایش عملکرد: کدهای اضافی را کاهش می دهد و از ابزارهای بهینه شده TypeScript استفاده می کند.
4. لرزش درخت با TypeScript
تکان دادن درخت کدهای استفاده نشده را در طول فرآیند بسته بندی حذف می کند. از خروجی ماژول ES TypeScript استفاده کنید (“module”: “ESNext”) برای اطمینان از سازگاری با باندلرهایی مانند Webpack یا Rollup.
پیکربندی:
{
“compilerOptions”: {
“module”: “ESNext”
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چرا: اطمینان حاصل می کند که باندلرها می توانند کدهای مرده را شناسایی و حذف کنند و اندازه بسته را کاهش دهند.
5. بهینه سازی برای عملکرد زمان اجرا
در حالی که TypeScript یک ابزار زمان کامپایل است، ویژگی های آن می تواند به طور غیر مستقیم بر عملکرد زمان اجرا تأثیر بگذارد.
از اظهارات بیش از حد نوع خودداری کنیدتایپ اظهارات (as یا ) در صورت استفاده بیش از حد یا سوء استفاده می تواند منجر به خطاهای زمان اجرا شود:
// Risky
const someValue: any = “hello”;
const stringLength = (someValue as string).length; // Unsafe
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکته: برای اطمینان از ایمنی از محافظ های نوع استفاده کنید:
function isString(value: unknown): value is string {
return typeof value === “string”;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ترجیح دادن Readonly برای تغییرناپذیریاستفاده کنید Readonly برای اعمال تغییر ناپذیری، که می تواند به جلوگیری از عوارض جانبی ناخواسته کمک کند:
const config: Readonly<{ port: number; debug: boolean }> = {
port: 3000,
debug: true,
};
// config.port = 4000; // Error
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
6. بهینه سازی حافظه
پروژه های بزرگ TypeScript ممکن است از مصرف حافظه زیاد رنج ببرند. با این اقدامات این مشکل را کاهش دهید:
محدوده نوع محدود: از انواع بیش از حد گسترده یا عمومی که نیاز به استنتاج عمیق دارند اجتناب کنید.
مدولار کردن: فایل های بزرگ را به ماژول های کوچکتر و متمرکز تقسیم کنید.
7. اشکال زدایی و پروفایل
اشکال زدایی کارآمد می تواند ساعت ها در زمان توسعه صرفه جویی کند:
از TypeScript استفاده کنید sourceMap گزینه ای برای نگاشت واضح بین TS و JS در حین اشکال زدایی:
{
“compilerOptions”: {
“sourceMap”: true
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
8. ویژگی های پیشرفته TypeScript
انواع مشروطبهینه سازی منطق بر اساس شرایط:
type Result<T> = T extends string ? string[] : number[];
const example: Result<string> = [“a”, “b”]; // Inferred as string[]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
انواع تحت اللفظی الگوافزایش ایمنی نوع با الگوهای رشته پویا:
type EventName = `on${Capitalize<string>}`;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
9. نکات و ترفندها
ترجیح دادن رابط ها به انواع برای تعاریف شیء در صورت امکان، زیرا رابط ها عملکرد بیشتری دارند و قابل گسترش هستند.
استفاده از Lazy Loading: انواع را به فایل های جداگانه تقسیم کنید و فقط در صورت نیاز بارگیری کنید.
ابزار سازی: از ابزارهای خاص TypeScript مانند ts-prune برای شناسایی صادرات بلااستفاده و تمیز نگه داشتن کد خود.
ادامه مطلب
وب سایت من: https://shafayeat.zya.me
کلونوپین ندارید؟ آماتورها…😀😀
در قلمرو TypeScript، بهینهسازی عملکرد فقط به اجرای سریعتر کد نیست، بلکه نوشتن راهحلهای قوی، مقیاسپذیر و قابل نگهداری است که در آزمون زمان مقاومت میکنند. این مقاله به جنبههای مختلف بهینهسازی عملکرد TypeScript با نکات، تکنیکها و مثالهایی میپردازد تا اطمینان حاصل شود که برنامههای شما هم کارآمد و مؤثر هستند.
1. بهینه سازی کامپایل TypeScript
تالیف افزایشی
TypeScript از کامپایل افزایشی پشتیبانی می کند، جایی که فقط فایل های تغییر یافته دوباره کامپایل می شوند. این به طور چشمگیری زمان ساخت پروژه های بزرگ را کاهش می دهد.
نحوه فعال کردن:
اضافه کنید "incremental": true
در شما tsconfig.json
:
{
"compilerOptions": {
"incremental": true
}
}
- فایده: سرعت ساخت را به خصوص در خطوط لوله CI/CD افزایش می دهد.
با استفاده از --skipLibCheck
اگر کتابخانههای خارجی را تغییر نمیدهید، از بررسی نوع آنها صرفنظر کنید:
{
"compilerOptions": {
"skipLibCheck": true
}
}
- چرا: با اجتناب از بررسی های اضافی نوع بسته های خارجی، زمان کامپایل را کاهش می دهد.
2. استنتاج نوع پیشرفته
استنتاج نوع TypeScript می تواند هم یک امتیاز و هم یک فاجعه باشد. استفاده بیش از حد از انواع صریح می تواند سرعت کامپایلر را کاهش دهد و کد شما را به هم بریزد.
مثال
const numbers = [1, 2, 3, 4]; // TypeScript infers `number[]`
const sum = numbers.reduce((acc, curr) => acc + curr, 0); // Infers `number`
- نکته: برای استنتاج انواع به کامپایلر اعتماد کنید، مگر اینکه مشخص شود.
از انواع بیش از حد پیچیده اجتناب کنید
تا جایی که ممکن است برای کاهش بار شناختی و بهبود عملکرد تدوین، انواع را ساده کنید:
// Overly complex
type NestedArray<T> = T | NestedArray<T>[];
// Simplified for specific cases
type NestedNumberArray = number | NestedNumberArray[];
3. استفاده از انواع ابزار
TypeScript انواع ابزارهای داخلی مانند Pick
، Omit
، Partial
، و Required
. اینها می توانند کد شما را ساده کرده و قابلیت نگهداری را بهبود بخشند.
مثال: با استفاده از Omit
به جای حذف دستی خواص:
type User = {
id: number;
name: string;
email: string;
};
type UserWithoutEmail = Omit<User, 'email'>;
افزایش عملکرد: کدهای اضافی را کاهش می دهد و از ابزارهای بهینه شده TypeScript استفاده می کند.
4. لرزش درخت با TypeScript
تکان دادن درخت کدهای استفاده نشده را در طول فرآیند بسته بندی حذف می کند. از خروجی ماژول ES TypeScript استفاده کنید ("module": "ESNext"
) برای اطمینان از سازگاری با باندلرهایی مانند Webpack یا Rollup.
پیکربندی:
{
"compilerOptions": {
"module": "ESNext"
}
}
چرا: اطمینان حاصل می کند که باندلرها می توانند کدهای مرده را شناسایی و حذف کنند و اندازه بسته را کاهش دهند.
5. بهینه سازی برای عملکرد زمان اجرا
در حالی که TypeScript یک ابزار زمان کامپایل است، ویژگی های آن می تواند به طور غیر مستقیم بر عملکرد زمان اجرا تأثیر بگذارد.
از اظهارات بیش از حد نوع خودداری کنید
تایپ اظهارات (as
یا
) در صورت استفاده بیش از حد یا سوء استفاده می تواند منجر به خطاهای زمان اجرا شود:
// Risky
const someValue: any = "hello";
const stringLength = (someValue as string).length; // Unsafe
- نکته: برای اطمینان از ایمنی از محافظ های نوع استفاده کنید:
function isString(value: unknown): value is string {
return typeof value === "string";
}
ترجیح دادن Readonly
برای تغییرناپذیری
استفاده کنید Readonly
برای اعمال تغییر ناپذیری، که می تواند به جلوگیری از عوارض جانبی ناخواسته کمک کند:
const config: Readonly<{ port: number; debug: boolean }> = {
port: 3000,
debug: true,
};
// config.port = 4000; // Error
6. بهینه سازی حافظه
پروژه های بزرگ TypeScript ممکن است از مصرف حافظه زیاد رنج ببرند. با این اقدامات این مشکل را کاهش دهید:
- محدوده نوع محدود: از انواع بیش از حد گسترده یا عمومی که نیاز به استنتاج عمیق دارند اجتناب کنید.
- مدولار کردن: فایل های بزرگ را به ماژول های کوچکتر و متمرکز تقسیم کنید.
7. اشکال زدایی و پروفایل
اشکال زدایی کارآمد می تواند ساعت ها در زمان توسعه صرفه جویی کند:
از TypeScript استفاده کنید sourceMap
گزینه ای برای نگاشت واضح بین TS و JS در حین اشکال زدایی:
{
"compilerOptions": {
"sourceMap": true
}
}
8. ویژگی های پیشرفته TypeScript
انواع مشروط
بهینه سازی منطق بر اساس شرایط:
type Result<T> = T extends string ? string[] : number[];
const example: Result<string> = ["a", "b"]; // Inferred as string[]
انواع تحت اللفظی الگو
افزایش ایمنی نوع با الگوهای رشته پویا:
type EventName = `on${Capitalize<string>}`;
9. نکات و ترفندها
- ترجیح دادن رابط ها به انواع برای تعاریف شیء در صورت امکان، زیرا رابط ها عملکرد بیشتری دارند و قابل گسترش هستند.
- استفاده از Lazy Loading: انواع را به فایل های جداگانه تقسیم کنید و فقط در صورت نیاز بارگیری کنید.
-
ابزار سازی: از ابزارهای خاص TypeScript مانند
ts-prune
برای شناسایی صادرات بلااستفاده و تمیز نگه داشتن کد خود.
ادامه مطلب
وب سایت من: https://shafayeat.zya.me
کلونوپین ندارید؟ آماتورها…😀😀