turi < T , U > holda = T uzaytiradi U ? hech qachon : T Siz shunday foydalanasiz :
turi A = < holda mantiqiy | raqam | ip ,
mantiqiy > // raqam | ip
Keling, TypeScript bu turni qanday hisoblashini ko'rib chiqaylik:
Kirishlardan boshlang:
turi A = < boolean holda | raqam | string , mantiqiy >
Shartni ittifoq bo'yicha taqsimlang:
turi A = < boolean , mantiqiy > holda | < son , mantiqiy > bo'lmasa
| < string , mantiqiy > holda
Without ning ta'rifini almashtiring va T va U ni qo'llang :
turi A = ( mantiqiy uzaytiradi mantiqiy ? hech qachon : mantiqiy ) | ( raqam uzaytiradi mantiqiy ? hech qachon : raqam )
| ( tor uzaytiradi mantiqiy ? hech qachon : string )
Shartlarni baholang:
turi A = hech qachon | raqam
| ip
Soddalashtiring:
turi A = raqam | ip
hech qachon (agar nima uchunligini bilmasangiz, o'zingiz uchun nima sodir bo'lishini ko'rib chiqing!) bilan yakunlangan bo'lardik . Infer kalit so'zi
Shartli turlarning yakuniy xususiyati umumiy turlarni shartning bir qismi sifatida e'lon qilish qobiliyatidir. Yangilash uchun biz hozirgacha umumiy turdagi parametrlarni e'lon qilishning faqat bitta usulini ko'rib chiqdik: burchakli qavslardan foydalanish ( ). Shartli turlar umumiy turlarni inline e'lon qilish uchun o'z sintaksisiga ega: infer kalit so'zi.
Massiv elementlarining turini oladigan ElementType shartli turini e'lon qilaylik :
Shartli turlar
turi ElementType < T > = T uzaytiradi noma'lum [] ? T [ raqam ] : T turi A = ElementType < raqam [] > // raqam Endi uni infer yordamida qayta yozamiz :
Do'stlaringiz bilan baham: |