T SC bayrog'i: strictFunctionTypes
Eski sabablarga ko'ra, TypeScript-dagi funktsiyalar aslida o'z parametrlari bo'yicha kovariant bo'lib, sukut bo'yicha bu tiplarga ega. Biz tadqiq qilgan xavfsizroq, ziddiyatli xatti-harakatni tanlash uchun tsconfig.json faylida {"strictFunctionTypes": true} belgisini yoqing . qat'iy rejim strictFunctionTypes ni o'z ichiga oladi , shuning uchun agar siz allaqachon {"strict": true} dan foydalanayotgan bo'lsangiz , ketishingiz mumkin. Tayinlash qobiliyati
Subtip va supertip munosabatlari har qanday statik tarzda yozilgan tilda asosiy tushunchalardir. Ular tayinlash qanday ishlashini tushunish uchun ham muhimdir (eslatma sifatida, tayinlash mumkinligi boshqa turdagi B kerak bo'lganda A turidan foydalanishingiz mumkinmi yoki yo'qligi haqida TypeScript qoidalariga ishora qiladi).
A turi B turiga tayinlanishi mumkinmi ?" Degan savolga javob bermoqchi bo'lganida. bir necha oddiy qoidalarga amal qiladi. Massivlar, mantiqiy qiymatlar, raqamlar, ob'ektlar, funksiyalar, sinflar, sinf misollari va satrlar, shu jumladan literal turlari kabi sanab bo'lmagan turlar uchun , agar quyidagilardan biri to'g'ri bo'lsa , A B ga tayinlanishi mumkin :
A <: B.
A har qanday .
1-qoida faqat kichik tur nima ekanligini ta'riflaydi: agar A B ning pastki turi bo'lsa , B kerak bo'lganda siz A dan ham foydalanishingiz mumkin .
2-qoida 1-qoidadan istisno bo'lib, JavaScript kodi bilan o'zaro ishlash uchun qulaylikdir.
Enum yoki const enum kalit so'zlari bilan yaratilgan enum turlari uchun , agar ulardan biri to'g'ri bo'lsa, A turi B enumiga tayinlanishi mumkin :
A - B sonining a'zosi .
B kamida bitta a'zoga ega, bu raqam , A esa raqam .
1-qoida oddiy turlar bilan bir xil (agar A raqam B ning a'zosi bo'lsa , u holda A ning turi B bo'ladi, shuning uchun biz B <: B ni aytamiz ).
2-qoida - enumlar bilan ishlash uchun qulaylik. 39-sahifadagi “Enums” da aytib o‘tganimizdek , 2-qoida TypeScript-da katta xavf manbai bo‘lib, men chaqaloqni hammom suvi bilan tashqariga tashlashni va enumlardan butunlay voz kechishni taklif qilaman.
Do'stlaringiz bilan baham: |