Forwarded from ⚝
TypeDoc.org
TypeDoc converts comments in TypeScript source code into rendered HTML documentation or a JSON model. It is extensible and supports a variety of configurations. Available as a CLI or Node module.
#typescript #FLOSS #tool #معرفی
@amiria703_channel
TypeDoc converts comments in TypeScript source code into rendered HTML documentation or a JSON model. It is extensible and supports a variety of configurations. Available as a CLI or Node module.
#typescript #FLOSS #tool #معرفی
@amiria703_channel
Forwarded from Accio
A #typescript trick that was useful to me today:
MakeOptionalPropertiesNullable will make optional fields of T accept null as well as their type. e.g:
Will be transformed into:
How is this useful?
Working with different controllers, validators or even ORMs might produce situations like this. For example in Prisma schemas any optional value is simply nullable so for an easier type mapping you might want to introduce a persistence model from your read model via this type mapper.
Or you want to accept both null and undefined from your users but don't want to clutter your domain types with it
How is this even working?
We are taking advantage of typescript mappers/transformers. NullableKeys<T> first creates a type that assigns
What now? now we pass our type to MakeOptionalPropertiesNullable<T> which at first, goes through any key of T that is not included in NullableKeys<T>. Meaning any key that isn't optional. We don't want to touch those so we simply assign their respective types via T[K]. Now it's time for optional keys to join the party. They will be assigned their own types along side a
type NullableKeys<T> = {
[K in keyof T]: undefined extends T[K] ? K : never;
}[keyof T];
export type MakeOptionalPropertiesNullable<T> = {
[K in Exclude<keyof T, NullableKeys<T>>]: T[K];
} & {
[K in NullableKeys<T>]: T[K] | null;
};MakeOptionalPropertiesNullable will make optional fields of T accept null as well as their type. e.g:
interface User {
name: string;
lastName?: string;
}Will be transformed into:
interface NewUser {
name: string;
lastName?: string | null;
}How is this useful?
Working with different controllers, validators or even ORMs might produce situations like this. For example in Prisma schemas any optional value is simply nullable so for an easier type mapping you might want to introduce a persistence model from your read model via this type mapper.
Or you want to accept both null and undefined from your users but don't want to clutter your domain types with it
How is this even working?
We are taking advantage of typescript mappers/transformers. NullableKeys<T> first creates a type that assigns
never to any property of T that is not optional (deciding with undefined extends T[K]) and at the end it will get the keys of the transformed object (which will skip any field that has the type never). So we end up with a type like below: "field1" | "field2" | "field3" | ...
What now? now we pass our type to MakeOptionalPropertiesNullable<T> which at first, goes through any key of T that is not included in NullableKeys<T>. Meaning any key that isn't optional. We don't want to touch those so we simply assign their respective types via T[K]. Now it's time for optional keys to join the party. They will be assigned their own types along side a
| null to make them nullable. A simple & will seal the deal at the end.Forwarded from Anophel | آنوفل
حالا Mapped Types در TypeScript به شما اجازه میده تا نوعهای جدیدی را بر اساس نوعهای موجود ایجاد کنید. با استفاده از یک نوع ژنریک ( Generic) که از یک union از PropertyKeyها (معمولاً با استفاده از keyof ایجاد میشه) برای تکرار کلیدها و ایجاد یک نوع جدید انجام میشه.
این باعث میشه دیگه نگران مقدار های null یا undefined نباشید.
حالا Utility Types در TypeScript مجموعهای از نوعهای از پیش تعریف شده هستند که به شما کمک میکنند تا تغییرات و عملیاتهای رایج روی نوعها را انجام بدید. این نوعها به شما اجازه میده تا نوعهای جدیدی بر اساس نوعهای موجود ایجاد کنید، پراپرتی ها Partial یا Required و همچنین Readonly کنید، نسخههای غیرقابل تغییر از نوعها بسازید و ...
اینم قشنگه و در تایپاسکریپت یک روش برای ایجاد انواع یونیک است که از اشتباهات لاجیکال جلوگیری میکنه. این نوعها با اضافه کردن یک ویژگی خاص به نوع اصلی، به نوعی “برند” میشوند.
دقت کنید این ویژگی در زمان اجرا وجود ندارد، اما به کامپایلر تایپاسکریپت کمک میکند تا تفاوت بین انواع مختلف را تشخیص بده.
موارد دیگه ای هم بودن، در پست های آینده بهش می پردازیم.
موردی هم بود حتما در بخش کامنت ها بنویسید ♥️
Anophel | آنوفل
#تایپ_اسکریپت #ts #typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
Anophel
Anophel | Where Developers Create Their Own Path
Anophel is an ecosystem for developers—a place for those who prefer building over consuming. If you want to create tools, think differently, and forge your own path in coding, Anophel is with you.
Forwarded from FullstacksJS — Academy
قسمت چهارم ماب ریویو: معماری نرم افزار و DDD
تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
مشاهده ویدئو
اگر علاقه دارید میتونید کدهاتون رو برای من بفرستید تا توی این جلسهها با همدیگه ریویوشون کنیم.
مباحث
00:00 ماب ریویو چیه؟
01:06 درباره پروژه؟
02:32 پارادایم Reactive Programming
03:55 معماری های Hexagonal
05:39 تعریف و انواع وابستگی توی معماری
06:55 مفهوم Dependency Inversion
13:41 مفهوم Dependency Injection
17:35 استفاده این مفاهیم توی معماری
20:08 لایه Domain توی معماری Clean
21:10 مزیت نام گذاری روی معماریها و پترنها
21:57 Domain Driven Design چیه؟
34:24 معرفی منابع برای DDD
37:53 پرکیتس ها و اهمیت Communication
42:39 مسئولیت لایه Application
44:43 آنتی پرتن Anemic domain
46:48 مفهوم Ubiquitous language و Bounded Context
53:16 مفاهیم Strategic design و Tactical Design
54:29 فرق بین Value Object و Entity
1:00:42 مفهوم Domain Event
1:02:00 مفهوم Aggregate root
1:05:34 استفاده از این مفاهیم تو NestJS
1:06:53 مفهوم persistence ignorance
1:09:06 بی اهمیت بودن ابزارها و اهمیت نیاز بیزینس
1:12:03 چرا مقایسه ابزارها درست نیست
1:14:29 کجا باید از DDD استفاده کنیم؟
1:15:41 چرا کسب تجربه توی DDD سخته؟
1:16:34 پترن CQRS
1:19:26 چرا نباید همه جا از پترنها و معماریها استفاده کنیم؟
✦ ماب ریویو چیه؟
✦ سورس کد
✦ اضافه کردن به تقویم
#mobreview #nestjs #cqrs #designpatterns #ddd #cleanarchitecture #hexagonarchitecture #mongodb #typescript #nodejs
تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
مشاهده ویدئو
اگر علاقه دارید میتونید کدهاتون رو برای من بفرستید تا توی این جلسهها با همدیگه ریویوشون کنیم.
مباحث
00:00 ماب ریویو چیه؟
01:06 درباره پروژه؟
02:32 پارادایم Reactive Programming
03:55 معماری های Hexagonal
05:39 تعریف و انواع وابستگی توی معماری
06:55 مفهوم Dependency Inversion
13:41 مفهوم Dependency Injection
17:35 استفاده این مفاهیم توی معماری
20:08 لایه Domain توی معماری Clean
21:10 مزیت نام گذاری روی معماریها و پترنها
21:57 Domain Driven Design چیه؟
34:24 معرفی منابع برای DDD
37:53 پرکیتس ها و اهمیت Communication
42:39 مسئولیت لایه Application
44:43 آنتی پرتن Anemic domain
46:48 مفهوم Ubiquitous language و Bounded Context
53:16 مفاهیم Strategic design و Tactical Design
54:29 فرق بین Value Object و Entity
1:00:42 مفهوم Domain Event
1:02:00 مفهوم Aggregate root
1:05:34 استفاده از این مفاهیم تو NestJS
1:06:53 مفهوم persistence ignorance
1:09:06 بی اهمیت بودن ابزارها و اهمیت نیاز بیزینس
1:12:03 چرا مقایسه ابزارها درست نیست
1:14:29 کجا باید از DDD استفاده کنیم؟
1:15:41 چرا کسب تجربه توی DDD سخته؟
1:16:34 پترن CQRS
1:19:26 چرا نباید همه جا از پترنها و معماریها استفاده کنیم؟
✦ ماب ریویو چیه؟
✦ سورس کد
✦ اضافه کردن به تقویم
#mobreview #nestjs #cqrs #designpatterns #ddd #cleanarchitecture #hexagonarchitecture #mongodb #typescript #nodejs
YouTube
Mob Review 4: معماری نرم افزار و DDD
توی این جلسه یک پروژه تو این جلسه یک پروژه NestJS رو با هم ریویو میکنیم.
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش…
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش…
Forwarded from LearnPOV | لرن پی او وی
💎 استخراج نوع آیتم از یک آرایه در
فرض کنید، یک DataType مشخص دارید (مثلاً از یک API) و دیتای شما به شکل آرایهای از آبجکتها هست و میخواید فقط تایپ آیتمهای این آرایه رو استخراج کنید بدون اینکه تایپ آیتم از قبل به صورت جدا تعریف شده باشه، توی این پست قراره با یه مثال ساده به حل کردن این مسئله بپردازیم ✅
کد اولیه ما به این شکله 🔻
حالا برای استخراج نوع آیتم های آرایه
📊 جمع بندی
حالا شاید پیش خودتون بگید که چرا باید از این روش استفاده بکنم ؟ چرا اصلا نیام و به صورت جدا تعریف بکنم تایپ
امیدوارم از این مطلب لذت برده باشید، با ریاکشنای خودتون بهمون انرژی بدید ❤️🔥
Typescript 💎فرض کنید، یک DataType مشخص دارید (مثلاً از یک API) و دیتای شما به شکل آرایهای از آبجکتها هست و میخواید فقط تایپ آیتمهای این آرایه رو استخراج کنید بدون اینکه تایپ آیتم از قبل به صورت جدا تعریف شده باشه، توی این پست قراره با یه مثال ساده به حل کردن این مسئله بپردازیم ✅
کد اولیه ما به این شکله 🔻
type GetAllUsersResponse = {
getAllUsers: Array<{
id: number;
name: string;
email: string;
}>;
};
const response: GetAllUsersResponse = {
getAllUsers: [ ... ],
};حالا برای استخراج نوع آیتم های آرایه
getAllUsers، میتونیم از [number] استفاده کنیم 🔻type UserItem = GetAllUsersResponse['getAllUsers'][number];
وقتی که [number] جلوی یک تایپ آرایه قرار میگیره، به typescript میگه که فقط نوع آیتم آرایه رو میخوام ✅📊 جمع بندی
حالا شاید پیش خودتون بگید که چرا باید از این روش استفاده بکنم ؟ چرا اصلا نیام و به صورت جدا تعریف بکنم تایپ
User رو ؟ 🤔درواقع این چالش بیشتر توی مواردی به وجود میاد که DataType شما مشخصه از قبل، مثل وقتی که از Graphql Codegen توی پروژتون استفاده میکنید، Codegen درواقع کارش اینه که Schema GraphQL رو به صورت اتومات به typescript تبدیل کنه تا دیگه مجبور نباشید تایپ ریسپانس API رو خودتون تعریف کنید.
یکی دیگه از دلایلی که عاشق گرفکیوالم :)
#️⃣ #typescript #tricks
🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from LearnPOV | لرن پی او وی
💎 بررسی Utility Typeها در TypeScript 💎
بعضی وقت ها تو تایپاسکریپت, نوع خاصی از type یا interface موجود نیازمون میشه، مثل optional یا required کردن تمامی پورپرتی های تایپ، یه همچین مواردی رو میتونیم خیلی ساده با Utility Typeها به شکل مدنظرخون تغییر بدیم، تقریبا میشه گفت یک instance با تغییرات و شرطهایی ازشون بسازیم....
✅ کاربردی ترین Utility Typeها
➊
تمام ویژگیهای یک تایپ رو اختیاری میکنه.
➋
تمامی پروپرتیهای یک تایپ رو اجباری میکنه.
➌
تمام پروپرتیهای تایپ رو ReadOnly میکنه.
➍
این یکی واقعا کاربردیه و کارش اینه که فقط ویژگیهای مشخصشده از یک تایپ رو برگردونه.
➎
ویژگیهای مشخصشده رو از یک تایپ حذف میکنه.
امیدوارم از این مطلب لذت برده باشید، با ریاکشنای خودتون بهمون انرژی بدید ❤️🔥
🚀 @CoolyCode
بعضی وقت ها تو تایپاسکریپت, نوع خاصی از type یا interface موجود نیازمون میشه، مثل optional یا required کردن تمامی پورپرتی های تایپ، یه همچین مواردی رو میتونیم خیلی ساده با Utility Typeها به شکل مدنظرخون تغییر بدیم، تقریبا میشه گفت یک instance با تغییرات و شرطهایی ازشون بسازیم....
#typescript
✅ کاربردی ترین Utility Typeها
➊
Partial<Type>تمام ویژگیهای یک تایپ رو اختیاری میکنه.
type User = { id: number; name: string };
type PartialUser = Partial<User>; // { id?: number; name?: string }➋
Required<Type>تمامی پروپرتیهای یک تایپ رو اجباری میکنه.
type User = { id?: number; name?: string };
type RequiredUser = Required<User>; // { id: number; name: string }➌
Readonly<Type>تمام پروپرتیهای تایپ رو ReadOnly میکنه.
type User = { id: number; name: string };
type ReadonlyUser = Readonly<User>; // { readonly id: number; readonly name: string }یعنی اگر بعد از تعریف آبجکت بخواید مقدار یکی از پروپرتیهای اون آبجکت رو تغییر بدید بهتون ارور میده.
➍
Pick<Type, Keys>این یکی واقعا کاربردیه و کارش اینه که فقط ویژگیهای مشخصشده از یک تایپ رو برگردونه.
type User = { id: number; name: string; email: string };
type PickedUser = Pick<User, 'id' | 'name'>; // { id: number; name: string }به Pick باید دو تا مقدار پاس بدید، اول تایپ مد نظرتون و دوم لیست پراپرتیها که میخواهید از نوع اولیه انتخاب کنید به این شکل : 'id' | 'name'
➎
Omit<Type, Keys>ویژگیهای مشخصشده رو از یک تایپ حذف میکنه.
type User = { id: number; name: string; email: string };
type OmittedUser = Omit<User, 'email'>; // { id: number; name: string }این یکی نحوه کارکردش مثل Pick هستش فقط به جای اینکه لیستی که بهش میدید رو ففط برگردونه میاد و فاکتور میگیره از تایپ حذف میکنه.
Forwarded from DevAcademy
دوستان بکاند سنیور مسلط به
Typescript , Nestjs , Expressjs , Go Lang
جویای کار
پوزیشن با تایم ایران و پرداخت ها دلاریه
لطفا رزومه هاتون رو به این آدرس ایمیل کنید
[email protected]
اگر هم توی تریدینگ تجربه دارید حتما حتما رزومه هاتون رو بفرستید
https://www.linkedin.com/posts/tarannom-lotfi-83b954199_backenddeveloper-typescript-nestjs-activity-7281990451631448064-Lgup?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
Typescript , Nestjs , Expressjs , Go Lang
جویای کار
پوزیشن با تایم ایران و پرداخت ها دلاریه
لطفا رزومه هاتون رو به این آدرس ایمیل کنید
[email protected]
اگر هم توی تریدینگ تجربه دارید حتما حتما رزومه هاتون رو بفرستید
https://www.linkedin.com/posts/tarannom-lotfi-83b954199_backenddeveloper-typescript-nestjs-activity-7281990451631448064-Lgup?utm_source=share&utm_medium=member_desktop
💻@DevAcaademy
💬@DevAcademyGroup
Linkedin
با سلام و عرض ادب | Tarannom Lotfi | 13 comments
با سلام و عرض ادب
دوستان بکاند سنیور مسلط به
Typescript , Nestjs , Expressjs , Go Lang
جویای کار
لطفا رزومه هاتون رو به این آدرس ایمیل کنید
[email protected]
اگر هم توی تریدینگ تجربه دارید حتما حتما رزومه هاتون رو بفرستید و اگر کسی هم میشناسید…
دوستان بکاند سنیور مسلط به
Typescript , Nestjs , Expressjs , Go Lang
جویای کار
لطفا رزومه هاتون رو به این آدرس ایمیل کنید
[email protected]
اگر هم توی تریدینگ تجربه دارید حتما حتما رزومه هاتون رو بفرستید و اگر کسی هم میشناسید…
Forwarded from کدنویس یکروزه (پدرام رحیمی)
لینکهای فراگیری Javascript
علاوه بر اینکه در یک پُست هشتگ های کانال رو معرفی کرده ام، حالا لینکهایی از مطالب مربوط جاوااسکریپت رو هم براتون میذارم که دوره کنید:
- کار با Local storage دیتابیس داخلی
- مشکلات محاسباتی در جاوااسکریپت
- روش ساخت برنامه تست چند جوابی
- چهار فرآیند CRUD در جاوااسکریپت
- آموزش Typescript یا جاوااسکریپت۶
- یک برنامه ی محاسباتی جاوااسکریپت
- جزوه ی مدرن جاوااسکریپت فارسی
- قفل گذاری روی برنامه ی تحت وب
- جزوه ی نصب و آموزش Node.js
- روش ساخت اَپ تک صفحه در Vue.js
- روش ساخت تاس با ۵ خط کدنویسی
علاوه بر اینها روی هشتگ زیر بزنید:
#javascript
علاوه بر اینکه در یک پُست هشتگ های کانال رو معرفی کرده ام، حالا لینکهایی از مطالب مربوط جاوااسکریپت رو هم براتون میذارم که دوره کنید:
- کار با Local storage دیتابیس داخلی
- مشکلات محاسباتی در جاوااسکریپت
- روش ساخت برنامه تست چند جوابی
- چهار فرآیند CRUD در جاوااسکریپت
- آموزش Typescript یا جاوااسکریپت۶
- یک برنامه ی محاسباتی جاوااسکریپت
- جزوه ی مدرن جاوااسکریپت فارسی
- قفل گذاری روی برنامه ی تحت وب
- جزوه ی نصب و آموزش Node.js
- روش ساخت اَپ تک صفحه در Vue.js
- روش ساخت تاس با ۵ خط کدنویسی
علاوه بر اینها روی هشتگ زیر بزنید:
#javascript
Telegram
کدنویس یکروزه
دسترسی به مطالب کانال:
مبتدی #beginner
گرافیک #graphics
بانک #database
کدها #code
محیط #ide
ابزارها #tools
بازی #game
کتاب #book
آندروید…
مبتدی #beginner
گرافیک #graphics
بانک #database
کدها #code
محیط #ide
ابزارها #tools
بازی #game
کتاب #book
آندروید…
Forwarded from Code Module | کد ماژول (Mahan-Heydari)
حالا بریم سراغ چیزی که همه رو توی شبکههای اجتماعی و جاهای دیگه هیجانزده کرده. طبق پستهایی که توی X دیدم و یه اعلامیه که ظاهراً 11 مارس 2025 توی وبلاگ تایپاسکریپت منتشر شده، تیم مایکروسافت داره روی یه نسخه کاملاً جدید کار میکنه که با زبان Go بازنویسی شده. یعنی کمپایلر تایپاسکریپت که الان با خودش نوشته شده و به جاوااسکریپت تبدیل میشه، قراره به یه برنامه مستقل و سریع با Go تبدیل بشه.
هنوز معلوم نیست این تغییر به Go روی خود زبان (مثل دستورات یا ویژگیها) اثر میذاره یا فقط کمپایلر رو عوض میکنه
#typescript #go #news
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from FullstacksJS — Academy
ریویو پروژه NextJS
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مشاهده ویدئو
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش صحبت کنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!
15:22 چطوری یک خط خالی توی کد روی استخدام شدن شما تاثیر میذاره؟
31:30 اضافه کردن فرمتر و لینتر
33:03 از public چیزی ایمپورت نکنید
34:47 کی و چطوری باید کامپوننتمون رو بشکنیم؟
42:35 مسئله useless fragment
43:51 یکپارچگی پیاده سازی و اسم گذاری
45:15 مسئله layout
48:04 مسئله اسم گذاری
53:46 بررسی کامپوننت Banner
55:11 چرا نباید از z-index و overflow زیاد استفاده کنید
55:54 تعداد خطهای کامپوننت Code Smell حساب میشه.
57:42 نحوده درست مدیریت z-index
59:51 اصل Single Responsibility تو فرانت اند
01:02:52 چه چیزهایی رو نباید توی کامپوننت برد؟
1:08:55 درک مسئله Spacing
1:11:07 پیاده سازی درست تم dark و light با taildinw
1:16:23 انکپسوله کردن مسئولیت های کامپوننت ها
1:20:07 کی از margin استفاده کنیم کی از padding
1:22:00 از grid و flex تو در تو استفاده نکنید.
1:27:34 به CSS فحش ندیم
1:28:32 فرق بین space و gap توی tailwind
1:30:25 جمع بندی
#fullstacksjs #mobreview #css #react #typescript #nextjs
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مشاهده ویدئو
درباره ماب ریویو:
ماب ریویو یه رویداد دوستانه و خودمونی برای انتقال تجربه دانشه.
توی این رویداد دور هم جمع میشیم تا یک سورس کد رو با هم ریویو کنیم و درباره پرکتیسهای بهتر و دلایلش صحبت کنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!
15:22 چطوری یک خط خالی توی کد روی استخدام شدن شما تاثیر میذاره؟
31:30 اضافه کردن فرمتر و لینتر
33:03 از public چیزی ایمپورت نکنید
34:47 کی و چطوری باید کامپوننتمون رو بشکنیم؟
42:35 مسئله useless fragment
43:51 یکپارچگی پیاده سازی و اسم گذاری
45:15 مسئله layout
48:04 مسئله اسم گذاری
53:46 بررسی کامپوننت Banner
55:11 چرا نباید از z-index و overflow زیاد استفاده کنید
55:54 تعداد خطهای کامپوننت Code Smell حساب میشه.
57:42 نحوده درست مدیریت z-index
59:51 اصل Single Responsibility تو فرانت اند
01:02:52 چه چیزهایی رو نباید توی کامپوننت برد؟
1:08:55 درک مسئله Spacing
1:11:07 پیاده سازی درست تم dark و light با taildinw
1:16:23 انکپسوله کردن مسئولیت های کامپوننت ها
1:20:07 کی از margin استفاده کنیم کی از padding
1:22:00 از grid و flex تو در تو استفاده نکنید.
1:27:34 به CSS فحش ندیم
1:28:32 فرق بین space و gap توی tailwind
1:30:25 جمع بندی
#fullstacksjs #mobreview #css #react #typescript #nextjs
YouTube
MobReview 6: بررسی کد ریاکت و نکست جی اس
توی این جلسه یک پروژه تو این جلسه یک پروژه NextJS رو با هم ریویو میکنیم.
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!…
مباحث:
00:00 درباره ماب ریویو
01:30 خواهش دومم
02:40 درباره پروژه
03:37 وابستگی ها
05:33 مسئله Dead Code و Zombie Code ها
10:10 سلامتی وابستگی ها
11:46 کدهایی که مردن رو پاک کنید!…
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔶 #Typescript OOP
وقتی میتونید از this داخل استاتیک متدها استفاده کنید که متدی که کال میکنید هم استاتیک باشه
when calling a static method inside another static method, you must reference it using this or the class name itself
#tips
@TheRaymondDev
وقتی میتونید از this داخل استاتیک متدها استفاده کنید که متدی که کال میکنید هم استاتیک باشه
when calling a static method inside another static method, you must reference it using this or the class name itself
class HTTPClient {
static request(url: string, method: string = 'GET'): void {
console.log(`Requesting ${url} with method ${method}`);
}
static fetchData(url: string): void {
// Calling the static method using "this"
this.request(url, 'GET');
// Calling the static method using the class name
HTTPClient.request(url, 'POST');
}
}
// Usage
HTTPClient.fetchData('https://api.example.com/data');#tips
@TheRaymondDev
Forwarded from Ditty | دیتی
آرایه با عضو اجباری توی تایپاسکریپت؟ 🤔
برای مثال چکار کنیم وقتی میخوایم یک تایپ برای یک آرایه داشته باشیم که:
۱. اعضای اون عددی باشن
۲. میخوایم کاربر رو مجبور کنیم که حتماً این آرایه رو خالی نذاره
از ترفند خط ۶ عکس استفاده میکنیم 👌
#typescript
برای مثال چکار کنیم وقتی میخوایم یک تایپ برای یک آرایه داشته باشیم که:
۱. اعضای اون عددی باشن
۲. میخوایم کاربر رو مجبور کنیم که حتماً این آرایه رو خالی نذاره
از ترفند خط ۶ عکس استفاده میکنیم 👌
#typescript
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
nestjs.zip
550.9 KB
میخواستم بیشتر nestjs یاد بگیرم ولی خب با این وضعیت نت نمیشد
بخش زیادی از داکیومنت nestjs رو بصورت markdown ذخیره کردم که میتونید راحت استفاده کنید
بخش sample گیتهاب نست که مثالاشو گذاشته هم اوردم تنها کاری که باید بکنید دپندنسی هارو اینستال کنید که اگه نت هم نداشتید بشه یاد گرفت
#nestjs #typescript
@TheRaymondDev
بخش زیادی از داکیومنت nestjs رو بصورت markdown ذخیره کردم که میتونید راحت استفاده کنید
بخش sample گیتهاب نست که مثالاشو گذاشته هم اوردم تنها کاری که باید بکنید دپندنسی هارو اینستال کنید که اگه نت هم نداشتید بشه یاد گرفت
#nestjs #typescript
@TheRaymondDev
Forwarded from DevTwitter | توییت برنامه نویسی
از خوبی های #TypeScript همین بس که اگه تازه واردش شدی و حس کردی با ارور های مکرر داره این پیام رو القا میکنه که چقدر برنامه نویس بیشعوری هستی، بدون که قبلشم همینقدر بیشعور بودی منتهی کسی به روت نمیاورده. :))
<ali Azizjahan/>
@DevTwitter
<ali Azizjahan/>
@DevTwitter
Forwarded from Code Lab (𝘮𝘰𝘯𝘪𝘣 𝘴𝘢𝘭𝘦𝘩𝘪)
🔥 تفاوت جاوااسکریپت و تایپاسکریپت
جاوااسکریپت یه زبان Dynamic هست یعنی تایپ دادهها رو موقع اجرا مشخص میکنه و این باعث میشه گاهی با خطاهای عجیب روبرو بشی
تایپاسکریپت اومده تا این مشکل رو حل کنه و به جاوااسکریپت قدرت Static Typing بده یعنی از همون اول تایپ متغیرها رو مشخص کنی و قبل از اجرا خطاها رو ببینی
در واقع تایپاسکریپت مثل یه لایه امن روی جاوااسکریپت عمل میکنه و کدتو تمیزتر و قابل پیشبینیتر میکنه
یه نکته مهم بدون تایپاسکریپت تبدیل به جاوااسکریپت میشه پس برای اجرا همیشه به JS برمیگرده
#TypeScript #JavaScript
CODELAB | GpCodeLab
جاوااسکریپت یه زبان Dynamic هست یعنی تایپ دادهها رو موقع اجرا مشخص میکنه و این باعث میشه گاهی با خطاهای عجیب روبرو بشی
تایپاسکریپت اومده تا این مشکل رو حل کنه و به جاوااسکریپت قدرت Static Typing بده یعنی از همون اول تایپ متغیرها رو مشخص کنی و قبل از اجرا خطاها رو ببینی
در واقع تایپاسکریپت مثل یه لایه امن روی جاوااسکریپت عمل میکنه و کدتو تمیزتر و قابل پیشبینیتر میکنه
یه نکته مهم بدون تایپاسکریپت تبدیل به جاوااسکریپت میشه پس برای اجرا همیشه به JS برمیگرده
#TypeScript #JavaScript
CODELAB | GpCodeLab
Forwarded from Gopher Academy
🔵 عنوان مقاله
be experimenting with
🟢 خلاصه مقاله:
از کتابخانههای زیادی که میخواهند به مخاطبان بیشتری برسند، در حال حاضر نسخههای JavaScript ارائه میشود تا هم در مرورگر و هم در محیطهای Node.js، Deno و Bun در دسترس باشند. مزیت اصلی، دسترسی گسترده، توزیع ساده از طریق npm و تجربه کاربری یکپارچه بین فرانتاند و بکاند است.
دو مسیر رایج وجود دارد: بازنویسی بومی با TypeScript برای ارائه APIهای استاندارد، تایپهای دقیق و قابلیت tree-shaking؛ یا پورت از زبانهای سطح پایین به WebAssembly برای حفظ کارایی و استفاده مجدد از کد موجود. ابزارهایی مانند Emscripten، wasm-bindgen و ابزارهای Go این کار را تسهیل میکنند و با ارائه TypeScript declarations سطح استفادهپسند ایجاد میشود.
چالشها شامل انتخاب بین ESM و CJS، بهینهسازی اندازه باندل و داراییهای WASM، محدودیتهای مرورگر (فایلسیستم و سوکت خام)، تفاوتهای اجرا در Node.js/Deno/Bun، و مدیریت کارایی و زمان راهاندازی است. استفاده از Web Workers، بارگذاری تدریجی، بنچمارکگیری در محیطهای مختلف و مستندسازی دقیق کمککننده است. در حوزه امنیت نیز باید مراقب زنجیره تأمین، نسخهبندی SemVer، تست و انتشار مرحلهای بود.
نمونههای موفق شامل OpenCV.js، نسخه WASM از SQLite، TensorFlow.js، ONNX Runtime Web و Pyodide است که نشان میدهند با طراحی API مناسب و ابزار درست، پورتهای جدی عملی است. قاعده تصمیمگیری: اگر کتابخانه سنگین و بهینه است، WASM انتخاب خوبی است؛ اگر هدف تجربه توسعهدهنده در اکوسیستم JavaScript است، بازنویسی با TypeScript بهتر است؛ و برای قابلیتهای سختافزاری/سیستمی، رویکرد هیبریدی یا سمت سرور منطقی است. با پیشرفت WebAssembly/WASI، WebGPU و پلتفرمهای edge مانند Cloudflare Workers و Vercel Edge، زمان مناسبی برای آزمایش و تکرار است.
#JavaScript #WebAssembly #TypeScript #NodeJS #Deno #npm #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/175359/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
be experimenting with
🟢 خلاصه مقاله:
از کتابخانههای زیادی که میخواهند به مخاطبان بیشتری برسند، در حال حاضر نسخههای JavaScript ارائه میشود تا هم در مرورگر و هم در محیطهای Node.js، Deno و Bun در دسترس باشند. مزیت اصلی، دسترسی گسترده، توزیع ساده از طریق npm و تجربه کاربری یکپارچه بین فرانتاند و بکاند است.
دو مسیر رایج وجود دارد: بازنویسی بومی با TypeScript برای ارائه APIهای استاندارد، تایپهای دقیق و قابلیت tree-shaking؛ یا پورت از زبانهای سطح پایین به WebAssembly برای حفظ کارایی و استفاده مجدد از کد موجود. ابزارهایی مانند Emscripten، wasm-bindgen و ابزارهای Go این کار را تسهیل میکنند و با ارائه TypeScript declarations سطح استفادهپسند ایجاد میشود.
چالشها شامل انتخاب بین ESM و CJS، بهینهسازی اندازه باندل و داراییهای WASM، محدودیتهای مرورگر (فایلسیستم و سوکت خام)، تفاوتهای اجرا در Node.js/Deno/Bun، و مدیریت کارایی و زمان راهاندازی است. استفاده از Web Workers، بارگذاری تدریجی، بنچمارکگیری در محیطهای مختلف و مستندسازی دقیق کمککننده است. در حوزه امنیت نیز باید مراقب زنجیره تأمین، نسخهبندی SemVer، تست و انتشار مرحلهای بود.
نمونههای موفق شامل OpenCV.js، نسخه WASM از SQLite، TensorFlow.js، ONNX Runtime Web و Pyodide است که نشان میدهند با طراحی API مناسب و ابزار درست، پورتهای جدی عملی است. قاعده تصمیمگیری: اگر کتابخانه سنگین و بهینه است، WASM انتخاب خوبی است؛ اگر هدف تجربه توسعهدهنده در اکوسیستم JavaScript است، بازنویسی با TypeScript بهتر است؛ و برای قابلیتهای سختافزاری/سیستمی، رویکرد هیبریدی یا سمت سرور منطقی است. با پیشرفت WebAssembly/WASI، WebGPU و پلتفرمهای edge مانند Cloudflare Workers و Vercel Edge، زمان مناسبی برای آزمایش و تکرار است.
#JavaScript #WebAssembly #TypeScript #NodeJS #Deno #npm #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/175359/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from DevAcademy
📌برای کسایی که نتونستن شرکت کنن
🚀 سورسکد و منابع ارائههای ایونت اخیرمون منتشر شد!
توی این ایونت دو ارائهی فوقالعاده داشتیم که حالا میتونید به راحتی سراغ کدها و مثالهاش برید 👇
💬 ارائهی آقای سالار نیلی دربارهی TypeScript
در این ارائه به مفاهیم پایه تا نکات پیشرفتهی TypeScript پرداخته شد و مثالهای عملی جذابی بررسی شدن.
📦 سورسکد و اسلایدها در گیتهاب:
🔗 github.com/codehalic/workshop-typescript-presentation
⚙️ ارائهی پوریا باباعلی دربارهی Flux Pattern
توی این ارائه معماری Flux و نحوهی استفاده از اون در پروژههای React مورد بحث قرار گرفت.
📦 سورسکد و نمونهکدهای ارائه در گیتهاب:
🔗 github.com/codehalic/workshop-flux-pattern-presentation
📚 پیشنهاد میکنیم حتماً سری به این ریپوها بزنید، کدها رو بررسی کنید و اگر سوالی داشتید با ما در میون بذارید 🙌
#TypeScript #Flux #Workshop #Codehalic #Frontend #WebDev
@codehalics
🚀 سورسکد و منابع ارائههای ایونت اخیرمون منتشر شد!
توی این ایونت دو ارائهی فوقالعاده داشتیم که حالا میتونید به راحتی سراغ کدها و مثالهاش برید 👇
💬 ارائهی آقای سالار نیلی دربارهی TypeScript
در این ارائه به مفاهیم پایه تا نکات پیشرفتهی TypeScript پرداخته شد و مثالهای عملی جذابی بررسی شدن.
📦 سورسکد و اسلایدها در گیتهاب:
🔗 github.com/codehalic/workshop-typescript-presentation
⚙️ ارائهی پوریا باباعلی دربارهی Flux Pattern
توی این ارائه معماری Flux و نحوهی استفاده از اون در پروژههای React مورد بحث قرار گرفت.
📦 سورسکد و نمونهکدهای ارائه در گیتهاب:
🔗 github.com/codehalic/workshop-flux-pattern-presentation
📚 پیشنهاد میکنیم حتماً سری به این ریپوها بزنید، کدها رو بررسی کنید و اگر سوالی داشتید با ما در میون بذارید 🙌
#TypeScript #Flux #Workshop #Codehalic #Frontend #WebDev
@codehalics
GitHub
GitHub - codehalic/workshop-flux-pattern-presentation
Contribute to codehalic/workshop-flux-pattern-presentation development by creating an account on GitHub.
Forwarded from کدهالیک | codehalic
🚀 سورسکد و منابع ارائههای ایونت اخیرمون منتشر شد!
توی این ایونت دو ارائهی فوقالعاده داشتیم که حالا میتونید به راحتی سراغ کدها و مثالهاش برید 👇
💬 ارائهی آقای سالار نیلی دربارهی TypeScript
در این ارائه به مفاهیم پایه تا نکات پیشرفتهی TypeScript پرداخته شد و مثالهای عملی جذابی بررسی شدن.
📦 سورسکد و اسلایدها در گیتهاب:
🔗 github.com/codehalic/workshop-typescript-presentation
⚙️ ارائهی پوریا باباعلی دربارهی Flux Pattern
توی این ارائه معماری Flux و نحوهی استفاده از اون در پروژههای React مورد بحث قرار گرفت.
📦 سورسکد و نمونهکدهای ارائه در گیتهاب:
🔗 github.com/codehalic/workshop-flux-pattern-presentation
📚 پیشنهاد میکنیم حتماً سری به این ریپوها بزنید، کدها رو بررسی کنید و اگر سوالی داشتید با ما در میون بذارید 🙌
#TypeScript #Flux #Workshop #Codehalic #Frontend #WebDev
@codehalics
توی این ایونت دو ارائهی فوقالعاده داشتیم که حالا میتونید به راحتی سراغ کدها و مثالهاش برید 👇
💬 ارائهی آقای سالار نیلی دربارهی TypeScript
در این ارائه به مفاهیم پایه تا نکات پیشرفتهی TypeScript پرداخته شد و مثالهای عملی جذابی بررسی شدن.
📦 سورسکد و اسلایدها در گیتهاب:
🔗 github.com/codehalic/workshop-typescript-presentation
⚙️ ارائهی پوریا باباعلی دربارهی Flux Pattern
توی این ارائه معماری Flux و نحوهی استفاده از اون در پروژههای React مورد بحث قرار گرفت.
📦 سورسکد و نمونهکدهای ارائه در گیتهاب:
🔗 github.com/codehalic/workshop-flux-pattern-presentation
📚 پیشنهاد میکنیم حتماً سری به این ریپوها بزنید، کدها رو بررسی کنید و اگر سوالی داشتید با ما در میون بذارید 🙌
#TypeScript #Flux #Workshop #Codehalic #Frontend #WebDev
@codehalics
GitHub
GitHub - codehalic/workshop-flux-pattern-presentation
Contribute to codehalic/workshop-flux-pattern-presentation development by creating an account on GitHub.