ruxsat bering a = null // har qanday a = 3 // har qanday a = "b" // har qanday
nol yoki noaniq bo'lgan o'zgaruvchi o'zi e'lon qilingan doirani tark etganda, TypeScript unga ma'lum bir turni tayinlaydi:
funktsiyasi x() {
ruxsat bering a = null // har qanday a = 3 // har qanday a = "b" // har qanday
qaytish a } x () // qator
Const turi
bir vaqtning o'zida deklaratsiyani kengaytirish turidan voz kechish uchun foydalanishingiz mumkin bo'lgan maxsus const turi bilan birga keladi. Uni tur tasdiqi sifatida ishlating ( 148-betdagi “Turni tasdiqlash” ni o'qing ):
ruxsat bering a = { x : 3 } // {x: raqam} ruxsat b : { x : 3 } // {x: 3} ruxsat c = { x : 3 } kabi const // {faqat o'qish x: 3}
const sizning turingizni kengaytirishdan voz kechadi va o'z a'zolarini , hatto chuqur joylashtirilgan ma'lumotlar tuzilmalari uchun ham faqat o'qish uchun rekursiv ravishda belgilaydi:
ruxsat bering d = [ 1 , { x : 2 }] // (raqam | {x: raqam})[] ruxsat bering e = [ 1 , { x : 2 }] kabi const // faqat o'qish [1, {faqat o'qish x: 2}]
TypeScript sizning turingiz haqida iloji boricha torroq xulosa chiqarishni istasangiz const sifatida foydalaning .
Turni kengaytirish, shuningdek, TypeScript bir ob'ekt turini boshqa ob'ekt turiga belgilash mumkin yoki yo'qligini tekshirganda rasmga kiradi.
116-betdagi “Shakl va massiv dispersiyasi” dan ob’ekt turlari o‘z a’zolarida kovariant ekanligini eslaylik . Agar TypeScript qo'shimcha tekshiruvlarsiz ushbu qoidaga amal qilsa, bu muammoga olib kelishi mumkin.
Misol uchun, uni sozlash uchun sinfga o'tishingiz mumkin bo'lgan Options ob'ektini ko'rib chiqing:
turi Variantlar = { baseURL : string kesh hajmi? : raqam daraja ?: "mahsulot" | 'dev' }
sinf API {
konstruktor ( xususiy opsiyalar : Variantlar ) {} }
Do'stlaringiz bilan baham: |