رقصنده با کد – Telegram
رقصنده با کد
783 subscribers
1.69K photos
850 videos
207 files
665 links
Here are some interesting things I've come across during my learning process. That's it. Admin ID:
@alithecodeguy
Download Telegram
ویژگی satisfied در TypeScript از نسخه 4.9 معرفی شده و برای بررسی نوع در زمان کامپایل بدون تغییر نوع اصلی متغیر استفاده می‌شود.

کاربرد اصلی satisfies

به شما اجازه می‌دهد مطمئن شوید که یک مقدار با یک تایپ خاص سازگار است.
اما برخلاف as، نوع مقدار را تغییر نمی‌دهد، فقط بررسی می‌کند.
در نتیجه:
• اگر اشتباه تایپی باشد، خطا می‌دهد.
• اگر درست باشد، نوع اصلی مقدار حفظ می‌شود.

مثال ساده


type Person = {
name: string;
age: number;
};

const user = {
name: "Ali",
age: 30,
extra: true
} satisfies Person;


اینجا user باید تمام الزامات Person را برآورده کند.
اما همچنان نوع user برابر با { name: string; age: number; extra: boolean } می‌ماند.
اگر name را حذف کنیم، خطا می‌دهد:


const user = {
age: 30
} satisfies Person; // خطا: name وجود ندارد


تفاوت با as


const user = {
name: "Ali",
age: 30
} as Person;


اینجا TypeScript فقط نوع را Cast می‌کند، حتی اگر چیزی کم باشد، ممکن است بدون خطا عبور کند (در حالت غیر strict).
ولی satisfies اجازه نمی‌دهد چیزی که ناقص است قبول شود.

مثال کاربردی‌تر با enum یا union


type Theme = "light" | "dark";

const config = {
theme: "light"
} satisfies { theme: Theme };

// اگر بنویسی:
const config2 = {
theme: "blue"
} satisfies { theme: Theme }; // خطا

#ts #interview
تفاوت git rebase و git merge در Git اساسی است، چون هر دو برای ترکیب تغییرات استفاده می‌شوند ولی نحوه‌ی ادغام و تاریخچه کاملاً فرق دارد.
--------------------------

💡 git merge

• چه می‌کند؟
تغییرات دو شاخه را با هم ادغام می‌کند و یک کامیت جدید (merge commit) ایجاد می‌کند.
• تاریخچه حفظ می‌شود به صورت شاخه‌ای (branching history).
• مزیت: سابقه واقعی و ترتیب زمانی کامیت‌ها حفظ می‌شود.
• عیب: تاریخچه ممکن است شلوغ شود (کامیت‌های Merge زیاد).


git checkout main
git merge feature


نتیجه:

A---B---C (main)
\
D---E (feature)
\
M (merge commit)

--------------------------

💡git rebase

• چه می‌کند؟
کل کامیت‌های شاخه‌ی فعلی را بر اساس شاخه‌ی هدف بازنویسی می‌کند (history rewrite).
• کامیت‌ها را جوری قرار می‌دهد که انگار از همان ابتدا بر اساس آخرین کامیت شاخه‌ی هدف ساخته شده‌اند.
• مزیت: تاریخچه خطی (linear history) و تمیز.
• عیب: بازنویسی تاریخچه خطرناک است (نباید در شاخه‌های اشتراکی استفاده شود).


git checkout feature
git rebase main

نتیجه:

A---B---C---D'---E' (feature)

#interview #git
تفاوت بین Promise.all و Promise.allSettled در جاوااسکریپت

--------

💡Promise.all

• همه‌ی پرامیس‌ها رو به صورت موازی اجرا می‌کنه.
• اگر حتی یکی از پرامیس‌ها reject بشه، کل Promise.all رد (reject) می‌شه.
• مقدار خروجی: آرایه‌ای از نتایج resolve شده (اگه همه موفق باشن).


const p1 = Promise.resolve(10);
const p2 = Promise.reject("Error");
const p3 = Promise.resolve(30);

Promise.all([p1, p2, p3])
.then(result => console.log(result))
.catch(error => console.log("Rejected:", error));
// خروجی: Rejected: Error


• فقط اولین خطا رو برمی‌گردونه، بقیه رو نادیده می‌گیره.

--------

💡Promise.allSettled

• همه‌ی پرامیس‌ها رو به صورت موازی اجرا می‌کنه.
• منتظر می‌مونه تا همه settle بشن (چه resolve چه reject).
• هیچ‌وقت reject نمی‌شه. همیشه resolve می‌شه با آرایه‌ای از نتایج.
• هر نتیجه یک آبجکت با این شکل:

{ status: "fulfilled", value: ... } یا
{ status: "rejected", reason: ... }


const p1 = Promise.resolve(10);
const p2 = Promise.reject("Error");
const p3 = Promise.resolve(30);

Promise.allSettled([p1, p2, p3])
.then(results => console.log(results));
/*
[
{ status: "fulfilled", value: 10 },
{ status: "rejected", reason: "Error" },
{ status: "fulfilled", value: 30 }
]
*/


هیچ خطایی throw نمی‌کنه، چون همه رو گزارش می‌ده.

#js #interview
تفاوت unknown و any در TypeScript

--------------

💡 any

• وقتی از any استفاده می‌کنی، TypeScript همه‌ی چک‌های تایپ را غیرفعال می‌کند.
• هر کاری می‌تونی با اون مقدار انجام بدی بدون خطا:


let x: any = "Hello";

x.toUpperCase(); // بدون خطا
x.push(123); // حتی اگه string باشه


• مشکل: Type safety از بین می‌ره. عملاً مثل جاوااسکریپت عادی می‌شه.

--------------

💡 unknown

• شبیه any هست از نظر اینکه می‌تونی هر مقداری بهش اختصاص بدی.
• اما برعکس any، نمی‌تونی مستقیماً باهاش عملیات انجام بدی مگر اینکه اول تایپش رو چک کنی (type narrowing).


let y: unknown = "Hello";

y.toUpperCase(); // خطا


• باید قبلش بررسی کنی:


if (typeof y === "string") {
console.log(y.toUpperCase()); // حالا مجازه
}


#ts #interview
با هشتگ #interview می‌تونید به تمام سولات مصاحبه‌ای که توی این چند سال بهشون برخوردم ، دسترسی داشته باشید.
فرض کنید یه پلی‌لیست توی یوتیوب هست ، نمیدونید مجموعا زمانش چه قدر میشه.
از طریق سایت زیر می‌تونید این زمان رو پیدا کنید

https://ytplaylist-len.sharats.dev/

#youtube
یک نکته کم کاربرد مخصوص دوستان مکار

اگر برای دانلود فایل از folx go استفاده می‌کنید ، هرزگاهی برای بعضی سایتها مخصوصا سایتهای ایرانی سکته میزنه و دانلود نمی‌کنه.

باید مشابه تصویر ادیتش کنید و referer بذارید
شرکت‌های بزرگ هم باگ میخورن.

سخت نگیرید
توسعه فردی چه جوری اعتماد به نفسمون رو نابود میکنه؟

https://youtu.be/TmFFAXg97sU?si=ylQ134QOgNBH8AG4

نگاه خیلی جالبی داره
عجیب اینکه با چت‌جی‌پی تی عصبانی حرف میزنی ، بهتر جواب میده
این دو تا بات گرامی خودشون رو شهید کردن اینقدر رکوست دادن.

اگر کسی رو فیزیکی نمیشناسید ، باهاش کانکشن نگیرید
توصیه:

اگر دنبال کار خارجی هستید

- توی لینکدین هیچ گونه مطلب و کامنت فارسی نذارید.
- هیچ پست فارسی هم لایک نکنید.
- هر گونه فعالیت فارسی تا الان کردید پاک کنید.
- همه چی پروفایلتون رو انگلیسی کنید.
- لوکیشن رو به غیر ایران تغییر بدید.
- شروع کنید با آدمای ساکن کشور مورد نظرتون کانکشن بگیرید.
- پست آدم‌های معروف حوزه خودتون رو لایک کنید و کامنت بذارید.
- پست‌های تخصصی انگلیسی و خوب بذارید.
- صبر کنید تا یک ماه قبل از فصل استخدام و تا اون موقع اپلای نکنید.
- قبل از شروع اپلای ، لینکدینتون رو پرمیوم کنید.
- سعی کنید آدمای ایرانی یا حتی خارجی اون شرکت رو پیدا کنید و ازشون خواهش کنید رفرال شما بشن. بیشتر از پنجاه درصد نفرات کمکتون می‌کنن. حالا یا از سر انسان‌دوستی یا به خاطر پاداش چندهزار دلاری که میگیرن.
- بدون رفرال اپلای نکنید که شانستون نسوزه.
- ایزی اپلای نکنید. یه آمار اومده که میگه زیر ۲٪ شرکتها با ایزی اپلای استخدام می‌کنن.
- رزومتون دقیقا مو به مو باید عین پروفایل لینکدینتون باشه.
- هر روز توی گیت‌هاب فعالیت کنید گرافتون سبز بشه.
- هر منطقه قواعد خودش رو برای رزومه داره. رزومه فله‌ای درست نکنید.
- شما فقط ۱۰ ثانیه وقت دارید که رزومتون تاثیرگذار باشه. این هم در صورتی هستش که الگوریتم‌ها به رزومتون امتیاز کافی داده باشن و رجکت نشده باشید.

از اهمیت لینکدین براتون همینقدر بگم که حتی برای برخی شغل‌های جنرال مثل فروشنده هم بعضی‌جاها ازتون آدرس لینکدین میخوان. یه جورایی تبدیل شده به هویت دیجیتال.
متخصص امنیت
۱۲۰ م خالص
شرکت داخلی
😂