Programming TypeScript


turi Faoliyat jurnali = { lastEvent : Sana voqealar : { id : string vaqt tamg'asi : Sana turi


Download 1.81 Mb.
bet109/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   105   106   107   108   109   110   111   112   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

turi Faoliyat jurnali = { lastEvent : Sana voqealar : { id : string vaqt tamg'asi : Sana turi : "O'qish" | "Yozish"
[]
}
ruxsat bering faoliyat jurnali : ActivityLog = // ... ruxsat bering oxirgi voqea = olish ( activityLog , 'lastEvent' ) // Sana
TypeScript siz uchun ishlaydi va kompilyatsiya vaqtida lastEvent turi Date ekanligini tasdiqlaydi . Albatta, siz ob'ektga chuqurroq kirish uchun buni kengaytirishingiz mumkin. Keling, uchta kalitni qabul qilish uchun haddan tashqari yuklaymiz:
turi Oling = {
<
O uzaytiradi ob'ekt ,
K1 uzaytiradi kaliti O
> ( o : O , k1 : K1 ) : O [ K1 ]
<
O uzaytiradi ob'ekt ,
K1 uzaytiradi kaliti O ,
K2 uzaytiradi kaliti O [ K1 ] > ( o : O , k1 : K1 , k2 : K2 ) : O [ K1 ][ K2 ]
<
O uzaytiradi ob'ekt ,
K1 uzaytiradi kaliti O ,
K2 uzaytiradi kaliti O [ K1 ],
K3 uzaytiradi kaliti O [ K1 ][ K2 ]
> ( o : O , k1 : K1 , k2 : K2 , k3 : K3 ) : O [ K1 ][ K2 ][ K3 ]
}
ruxsat bering olish : olish = ( ob'ekt : har qanday , ... tugmalar : string []) => {
ruxsat bering natija = ob'ekt
kalitlari . har bir ( k => natija = natija [ k ])
qaytish natija } olish ( activityLog , 'voqealar' , 0 , 'turi' ) // 'O'qish' | 'Write' get ( activityLog , 'bad' ) // Xato TS2345: "yomon" turidagi argument // turi parametriga tayinlanmaydi // '"so'nggi voqea" | "hodisalar".
Bitta tugma, ikkita tugma va uchta tugma bilan get chaqirganimizda uchta holat bilan get uchun haddan tashqari yuklangan funksiya imzosini e'lon qilamiz .
Bu bitta kalitli holat oxirgi misol bilan bir xil: O - ob'ektning pastki turi , K1 - bu ob'ekt tugmachalarining pastki turi va qaytish turi - K1 bilan O ga kirganingizda olingan har qanday maxsus tur .
Ikki kalitli ish bir kalitli holatga o'xshaydi, lekin biz K1 bilan O ga kirish natijasida yuzaga keladigan ichki ob'ektdagi mumkin bo'lgan kalitlarni modellashtirish uchun yana bitta umumiy turdagi K2 ni e'lon qilamiz .
Biz ikki marta kiritish orqali quramiz - avval O[K1] turini olamiz , so'ngra natija bo'yicha [K2] turini olamiz .
Ushbu misol uchun biz uchtagacha ichki kalitlarni ishlatamiz; Agar siz haqiqiy kutubxonani yozayotgan bo'lsangiz, ehtimol siz bundan ham ko'proq ishlarni ko'rib chiqishni xohlaysiz.
Ajoyib, a? Agar sizda bir daqiqa bo'lsa, Java do'stlaringizga ushbu misolni ko'rsating va ular orqali o'tayotganda xursand bo'ling.
T SC bayrog'i: keyofStringsOnly

JavaScript-da ob'ektlar va massivlar ham string, ham simvolli kalitlarga ega bo'lishi mumkin. An'anaga ko'ra, biz odatda massivlar uchun raqamli tugmachalardan foydalanamiz, ular ish vaqtida satrlarga majburlanadi.
Shu sababli TypeScript-dagi keyof | turidagi qiymatni qaytaradi string | sukut bo'yicha belgi (agar siz uni aniqroq shaklda chaqirsangiz, TypeScript ushbu birlashmaning aniqroq kichik turini ko'rsatishi mumkin).
Bu xatti-harakat to'g'ri, lekin so'zli kalit bilan ishlashga yordam beradi , chunki siz TypeScript-ga siz boshqarayotgan kalit raqam yoki belgi emas, balki string ekanligini isbotlashingiz kerak bo'lishi mumkin .
TypeScript-ning eski xatti-harakatlariga qo'shilish uchun - bu erda kalitlar satr bo'lishi kerak - keyofStringsOnly- ni yoqing tsconfig.json bayrog'i.

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   105   106   107   108   109   110   111   112   ...   206




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling