Kengaytirilgan funksiya turlari
Bizning funktsiyamiz biz uni topshirgan bir xil argumentni qaytaradi. Sehr-jodu barcha turlarda mavjud.
Kodingiz ko'plab kortej turlaridan foydalanganda turdagi tasdiqlarni oldini olish uchun ushbu texnikadan foydalaning.
Foydalanuvchi tomonidan belgilangan turdagi qo'riqchilar
Ba'zi mantiqiy -qaytaruvchi funktsiyalar uchun funktsiyangiz mantiqiy qiymatni qaytaradi, deb aytishning o'zi etarli bo'lmasligi mumkin. Misol uchun, keling, siz unga satrni uzatdingizmi yoki yo'qmi degan funksiyani yozaylik:
funktsiyasi isString ( a : noma'lum ) : mantiqiy { qaytish turiof a === 'string' }
isString ( 'a' ) // rost deb baholaydi isString ([ 7 ]) // noto'g'ri deb baholaydi
Hozirgacha juda yaxshi. Ba'zi haqiqiy dunyo kodida isString dan foydalanmoqchi bo'lsangiz nima bo'ladi ?
funktsiyasi parseInput ( kirish : string | raqam ) {
ruxsat bering formatlangan kirish : string if ( isString ( kirish )) {
formatlangan kirish = kiritish . toUpperCase () // Xato TS2339: "toUpperCase" xususiyati
} // "raqam" turida mavjud emas.
}
Nima beradi? Agar typeof turini muntazam takomillashtirish uchun ishlasa ( 126-betdagi “Yaxshilash” ga qarang ), nega bu yerda ishlamaydi?
Turni aniqlashtirish bilan bog'liq narsa shundaki, u faqat o'zgaruvchi turini siz o'z ichiga olgan doirada aniqlashtirish uchun yetarli darajada kuchli. Bu doirani tark etishingiz bilanoq, aniqlashtirish siz qaysi yangi doirada bo'lmasin, o'tmaydi. isString ilovamizda biz typeof dan foydalanib kirish parametrining turini stringga aniqladik , lekin turdagi aniqlashtirish yangi qamrovlarga o‘tmagani uchun u yo‘qolib ketdi — TypeScript shuni biladiki, isString mantiqiy qiymat qaytargan .
isString nafaqat mantiqiy qiymatni qaytaradi , balki bu mantiqiy qiymat to'g'ri bo'lganda, biz isString ga o'tkazgan argumentimiz satr ekanligini aytishimiz mumkin . Buning uchun biz foydalanuvchi tomonidan belgilangan turdagi himoya deb ataladigan narsadan foydalanamiz :
Do'stlaringiz bilan baham: |