elyor.dev – Telegram
elyor.dev
291 subscribers
97 photos
3 videos
84 links
- Shaxsiy fikrlar hammasi ham to'g'ri bo'lmasligi mumkin

© Elyor Shodiyorov
Download Telegram
Typenoscript Generic Types

Generic typelarni dynamic o'zgaruvchidek tushunish mumkin. Masalan funksiya unga berib yuborilgan argumentlar typelariga qarab har xil result qaytarishi mumkin. Bunaqa funksiya uchun typelarni yozishda aynan generic types yordamga keladi.

Misol uchun juda oddiy bo'lgan log funksiyasi, berib yuborilgan argumentni log qiladi va uni qaytaradi. Bu oddiy misol:

function log <DynamicType> (arg: DynamicType): DynamicType {
console.log(arg)
return arg
}


Bu funksiyada DynamicType aynan generic type hisobalanadi. Tashqarida qanaqa type uzatilsa o'shani qabul qiladi:

const res1 = log<number>(10) // number

const res2 = log<string>('generics') // string


Real hayotda genericslar juda ko'p va keng qo'llaniladi. Masalan yaxshi typelangan kutubxona yozish uchun. Yoki oddiy programmniy kodlarda ham genericslarsiz ancha qiyin bo'lar edi.

Batafsilroq shu yerda o'qish mumkin.

Siz genericslarni ishlatasizmi?

#typenoscript #generics

@elyor_dev
🔥5
Conditional Types

Kundalik kod yozayotganimizda odatda bir jarayonning natijasi boshqa jarayondan hosil bo'ladigan natijaga bog'liq bo'lishini ko'ramiz. Boshqacha qilib aytganda bir jarayonning natijasidan kelib chiqib bir nechta boshqa jarayonlar sodir bo'lishi mumkin. Bunday holat biz shart operatorlarini ishlatamiz. Javanoscript'da doim ishlatadiganlarimiz if else, switch case yoki ? : .

Typenoscript'da ham typelarni yozishda o'zining shart (conditional yoki ternary) operatoridan foydalanish mumkin. Bunga misol rasmda keltirilgan.

Yuqoridagi kodning biroz boshqacha varianti:

type LengthOf<T> = T extends {length: number} ? T['length'] : never


Batafsilroq bu yerda o'qish mumkin.

#typenoscript #conditional_types

@elyor_dev
👍2🔥2
Mapped Types

Kod yozish jarayonida yana bir uchrab turiladigan holat bu bir type asosida boshqa bir type yasash. Bunaqa holatda sevimli copy&paste methodidan foydalanilsa, dastur murakkablashgan sari bir type o'zgarishiga, uni copy&paste qilib hosil qilingan qolgan typelarni manual update qilishga majburlaydi. Bunday holatlarda bizga mapped types yordamga keladi. Buni xuddi js dagi Array.map() kabi tushunsa ham bo'lar. Misollar rasmlarda keltirilgan.

[key in keyof T] qilib berib yuborilgan type'ning barcha key'larini olamiz, for...in ga o'xshash.

Batasilroq o'qishni maslahat beraman: Link

P.S. type'ning barcha keylarini optional qilish uchun typenoscriptda built-in Partial<T> utility bor.

#mapped_types #typenoscript

@elyor_dev
🔥4👍1
Abstract classes

Abstract class'larning oddiy class'lardan farqi undan to'g'ridan to'g'ri instance olib bo'lmaydi. Bunday class'lar asosan inheritance (andoza olish) uchun ishlatiladi. Abstract class'ni hosil qilish uchun abstract kalit so'zi ishlatiladi.

Abstract classlarda abstract methodlar ham bo'lishi mumkin. Misol uchun rasmda Person class'dagi pray() methodi. Abstract methodlar inheritance qilgan class'da albatta implement qilinishi kerak, aks holda compiler xato beradi.

Batafsilroq bu yerda o'qish mumkin.

#abstract_classes #typenoscript

@elyor_dev
Forwarded from Engineering Notes
Oxirgi paytlarda 1-2 ta o'zi ham tushunmaydigan conference yoki hackatonlarda qatnashib, o'zini zo'r mutaxassis deb hisoblaydiganlar ko'payib ketayapti. Umrida bir qator kod yozmagan IT project managerlar, matematikani bilmaydigan AIchilar, bittagina prezentatsiya bilan falon so'm yutib olgan ixtirochilar, umrida startup qilib ko'rmagan startup maslahatchilar, ... . 2-3 tasi bilan gaplashib ko'rdim, nuqul osmondan keladi, lekin gapida ma'no yo'q. Lekin shular mediaga chiqib oddiy xalq tushunmaydigan 2-3 ta termin qo'shib gapirsa odamlar "o'g'lim/qizim shunga o'xshasin" deb comment yozadi. Menga nima, o'zlarini xursand qilib yuraversin deyman-u, lekin hamma e'tibor shularda bo'lgani uchun aslida qo'lidan ish keladigan yoshlar soyada qolib ketayapti. Aslida shu qo'lidan ish keladigan qatlam haqli bo'lgan imkoniyatlar haligi "mutaxassis"larga berilib, bir tiyinga qimmat ishlarga sovurilib ketayapti.

Bu postni ko'rolmaslik deb hisoblasangiz, mayli, shunday bo'lsin.
👍14
Triple-Slash Directives

Typenoscriptda Triple-Slash Directives - bu maxsus izohlar bo'lib, ular kompilyator uchun qo'shimcha ko'rsatmalar beradi. Ular fayl boshida joylashtiriladi va uch slash (///) bilan boshlanadi. Odatda bunaqa izohlarni ba'zi config filelarda ko'rib qolamiz, masalan vite.config.ts da ko'rganlar ko'p bo'lsa kerak.

Asosiy Triple-Slash Direktivalar:

/// <reference path="..."/> - Boshqa TypeScript fayllarini import qilish uchun ishlatiladi.
/// <reference types="..."/> - Tashqi kutubxonalar uchun tiplarni import qilish.
/// <amd-module name="..."/> - AMD modullarini nomlash.
/// <amd-dependency path="..."/> - AMD modullariga bog'liqliklarni ko'rsatish.

Misol uchun:

/// <reference path="utils.ts" />
/// <reference types="node" />

// Kod davomi...


To'liqroq shu yerda o'qish mumkin.

#typenoscript #triple_slash_directives

@elyor_dev
5👍2👎1
😁11👍1
Forwarded from MJ
Frontend/Vue bo'yicha mock intervyu ketyapti. Jonli efirda ko'rsangiz bo'ladi.

Suhbat davomida o'zingiz ham mustaqil javob berib holatingizni bilib ololasiz.

https://www.youtube.com/live/pCUjBoRlM1w?si=gENCxdmyPr_8vHdR
🔥4👍1
Forwarded from Ayyubxon Fargʻoniy | 0.1x engineer (Ayyubxon)
Dasturlashni oʻrganib, ishga topshirishni boshlaganingizdan keyin qancha vaqt oʻtib ishga joylashgansiz?
Anonymous Poll
23%
1-6 oy
9%
6 oy - 1 yil
9%
1-2 yil
8%
2+ yil
28%
Hali ishga joylashmadim
5%
Nima u ish?
17%
Javoblarni koʻrmoqchiman
👍1
Overload Functions

Overload Functions - bu bir xil nom bilan bir nechta funksiya ta'riflanishi. Bu funksiyalar parametrlarining soni va/yoki turlari bilan farq qilishi kerak.
Masalan, quyidagi add funksiyasini overload qilish mumkin:

function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
return a + b;
}

const sum = add(1, 2) // number

const result = add('Hello', 'World') // string


Yuqoridagi misolda add funksiyasining ikkita overload varianti mavjud:

1. add(a: number, b: number): number - ikkita number turli parametrlarni qabul qiladi va number qaytaradi.
2. add(a: string, b: string): string - ikkita string turli parametrlarni qabul qiladi va string qaytaradi.

Overload functionsdan quyidagi use caselarda foydalansa bo'ladi:

1. Bir xil nomli, lekin turli xil ishlovchi funksiyalarni yaratish.
2. Funksiyaning turli xil versiyalarini yaratish.
3. Funksiya parametrlarining turini (tipini) aniq bilish.

React'dagi useState ga qarasak ham overload functionsni ko'rish mumkin:

function useState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];

function useState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];


#typenoscript #overload_functions

@elyor_dev
🔥3👍1
Forwarded from Ayyubxon Fargʻoniy | 0.1x engineer (Ayyubxon)
Birinchi mashina tuzatishdagi ustam (akam) bir narsani ta'kidlab aytardi:

- Agar xizmat narxini kelishmagan yoki arzonga kelishib qo'ygan bo'lsang ham, bu haqida o'ylamasdan ishni yaxshilab bajargin, ishni yaxshi qilish kerak

Agar hozir kamroq oylik olayotgan bo'lsangiz ham, o'z ishingizga professionallardek yondashishingiz kerak, oylikni kamligi ishni sifatiga ta'sir qilmasligi kerak.

Oylikni oshirish yoki boshqa yaxshiroq ishga o'tish haqida o'ylasangiz ham, hozirgi ishni yaxshilab qiling, bu bizni rizqimiz, keyinchalik shu yaxshi ish qilish odati o'zimiz bilan ketadi baribir.

$500 to'laydi oyiga, shunga yarasha ishlayman degan fikrlashda bo'lish kerakmas deb o'ylayman.
O'z ishini yaxshi bajargan odam tezroq o'sadi.

Ishxonalar almashaveradi, ammo tajriba, ko'nikma, odatlar o'zimiz bilan qoladi.


@aifarghani
🔥8👍1
Webstorm aytishi bo'yicha ismimni floor ga o'zgartirishim kerak ekan.

#typo #webstorm #joke

@elyor_dev
🤣19👍1
Forwarded from GDG Tashkent (Khumoyun Inoyatov)
🔥 GDG Tashkent-dan uzoq tanaffusdan keyingi birinchi kuzgi Web Dev Meetup #3 ni kutib oling!

Kelayotgan shanba kuni yurtimiz va dunyoning top kompaniyalarida faoliyat yuritadigan web-dasturchilar bilan Web Dev Meetup o’tkazamiz.

💥 Spikerlar ichida:
- Ravshan Samandarov, Oxagile;
- Diyorbek Sadullaev, Pinterest;
- Doniyor Yusupov, Uzum Market;
- Umar Sadullaev, Unicon Soft;

Tadbir to’liq o’zbek tilida bo’ladi!

👀 Sana: 7-Sentabr, 2024
🕙 Vaqt: 14:00
📍 Joy: IT Park, Muminov 7/1

Ishtirok etish narxi: BEPUL.

🎟 Ro'yxatdan o'tish uchun havola:
https://gdg.community.dev/events/details/google-gdg-tashkent-presents-web-dev-meetup-3/

* Joylar soni chegaralanganligi tufayli "First come first serve" qoidalari amal qiladi. Joy sig’imi 180 kishi. Tadbir online translatsiya qilinadi.

@gdgtashkent
👍21
E'lon

Yakshanba, 29-sentabr soat 21:00 da titanlar jangi bo'layotgan ekan. Aytishlaricha React vs Vue and Angular emish... Jangni tomosha qilish shu yerda [link].

Baribir React top! Qattiq chalg'imanglar

#titanlar_jangi #react_top

@elyor_dev
🔥11👎4💯3👍21
Forwarded from Khamidulla Inoyatov
Las entrevistadoras también lloran

Bir yildan beri Algorithms Problem Solving dan intervyu olayotgan bo‘lsam ko‘p xollarda “Meni boshqa ishim yo‘qmi o‘zi?”, “Nega suhbatni hozir to‘xtata olmayman?”, “Nega bu kandidat lar suhbatga tayyorlanib kelmasdan mening vaqtimni olyapti?” deb o‘ylab qolaman. Suhbatdan so‘ng men bilan birga suhbatga kirgan hamkasbim bilan gaplashganimizda odatda “Shuncha vaqt uvol bo‘ldi”, “Nahotki bilimi yo‘q odam omadim kelib o‘tib ketaman deb o‘ylaydi?” deb bir-birimizdan so‘rab qolamiz.
Suhbatga kirganlarni quyidagi toifalarga bo‘lsa bo‘ladi:
• Cheaterlar - AI yoki boshqa odam suhbat jarayonida yordam berib tursa interviewerlar bilmaydi deb o‘ylaydiganlar.
• Algorithm haqida eshitgan lekin umuman masala ishlab ko‘rmaganlar - corner case larni xar birini yozib chiqqungacha suhbat vaqti tugab qoladi.
• Algorithm haqida eshitgan, masala ishlab ko‘rgan lekin umuman “text editor” ishlatmaganlar - kerakli method yoki kerakli package ni eslay olmaydi va suhbat vaqti tugab qoladi.
• “Java developer” lar - 80% intervyu ga kelib yiqilib ketadiganlar. Uzun uzun qatorlarni text editor da yozgunigacha vaqt o‘tib ketadi. Method nomlarini, package nomlarini eslay olishmaydi. Method signature ni yozgungacha o‘zi nima deb yozgani eslay olmaydi. O‘zgartirish kiritishni so‘rasangiz kodni qanday to‘g‘rilashni bilmay qoladi.
• “Interview virgin” lar - maktabni bitirib ish qidirayotganlar. Orasida yaxshi kandidat lar Problem Solvingdan o‘tsa xam hozirgi vaqtlarda kelasi bosqichlardan yiqilib ketishadi. Nimagadir orasida Python developerlar ko‘p. Java juda xam kamayib ketgan.
• Masalani ishlab berdim endi men ishga oladi deb o‘ylaganlar - masalani qanday ishlaganiga xam bog‘liq kelasi bosqichga o‘tish o‘tmaslik. Bu haqida pastda batafsilroq gaplashamiz.
• “Ninja Algorithm Problem Solving developer” lar - hayotda juda kam uchrarkan tog‘risi. Asosan Go, Python, va C++ da ko‘d yozishadi. (Karl C++ yozishadi). Java developerlardan interviewdan o‘tganini eslay olmayman. Balkim menga uchramagandir.
Suhbatdan o‘tmaydiganlarni boshqa tariflarini gapirsam til ojiz. O‘zbek tilidagi lug‘at boyligim yetmayapti 😭.

P.S. Suhbatdan kimlar o‘ta olishini birinchi qo‘ldan eshitmoqchimisiz? Unda postga like bosing, shunda keyingi postda aytib o‘taman 😉.
P.P.S. Xozir yana interview ga kirib ketyapman ko’ramiz nima bo’larkan
👍7🔥21👌1
Uzoq vaqt kechasi ishlab kunduzi uxlagan odam sifatida ushbu postni o'qib ko'rishni maslahat beraman.

https://news.1rj.ru/str/khumoyun_codes/754