Bu…
|
ga teng
|
string T ni kengaytiradi? A: B
|
string T ni kengaytiradi? A: B
|
(string | raqam) T ni kengaytiradi? A: B
|
(satr T ni kengaytiradi? A : B) | (raqam T ni kengaytiradi? A : B)
|
(string | raqam | mantiqiy) T ni kengaytiradi? A: B
|
(satr T ni kengaytiradi? A : B) | (raqam T ni kengaytiradi? A : B) | (mantiqiy T ni kengaytiradi? A : B)
|
Bilaman, bilaman, siz matematikani o'rganish uchun bu kitobni o'ylamagansiz - siz bu yerda turlar uchunsiz. Shunday qilib, keling, aniqroq bo'lsin. Aytaylik, bizda T tipidagi ba'zi o'zgaruvchilarni oladigan va uni T[] tipidagi massivga ko'taradigan funksiya bor . T uchun birlashma turiga o'tsak nima bo'ladi ?
turi ToArray < T > = T []
turi A = ToArray < raqam > // raqam [] turi B = ToArray < raqam | string > // (raqam | qator)[]
Juda oddiy. Endi shartli tur qo'shsak nima bo'ladi? (E'tibor bering, shart bu erda hech narsa qilmaydi, chunki uning ikkala filiali ham bir xil T[] turiga o'tadi ; bu erda TypeScript-ga tarqatishni aytish uchun. Kortej turi ustida T. ) Ko‘rib chiqing:
turi ToArray2 < T > = T uzaytiradi noma'lum ? T [] : T []
turi A = ToArray2 < raqam > // raqam[]
turi B = ToArray2 < soni | string > // raqam[] | string[]
Buni tushundingizmi? Shartli turdan foydalansangiz, TypeScript birlashma turlarini shartli shoxlarga taqsimlaydi. Bu shartli turni olish va uni birlashmadagi har bir element bo'yicha xaritalash (er, tarqatish ) kabi.
Nima uchun bularning barchasi muhim? Xo'sh, bu sizga bir qator umumiy operatsiyalarni xavfsiz tarzda ifodalash imkonini beradi.
Masalan, TypeScript ikki turdagi umumiy va | ni hisoblash uchun & bilan birga keladi ikki turdagi birlashmani olish uchun. Keling, T da bo'lgan, lekin U da bo'lmagan turlarni hisoblaydigan Without< T , U> ni quraylik .
Do'stlaringiz bilan baham: |