interfeys StringDatabase {
davlat : davlat
get ( kalit : string ) : ip | null set ( kalit : string , qiymat : string ) : bekor }
StringDatabase konstruktor turi :
interfeys StringDatabaseConstructor {
yangi () : StringMa'lumotlar bazasi
dan ( shtat : Shtat ) : StringMa'lumotlar bazasi }
Ya'ni, StringDatabaseConstructor bitta .from usuliga ega va yangi konstruktor StringDatabase misolini beradi. Birgalikda bu ikki interfeys sinfning konstruktor va misol tomonlarini modellashtiradi.
Bu new() biti konstruktor imzosi deb ataladi va TypeScript-ning ma'lum bir turni new operatori bilan yaratish mumkinligini aytish usulidir . TypeScript tizimli ravishda terilganligi sababli, sinf nima ekanligini tasvirlash uchun biz qila oladigan eng yaxshi narsa bu: sinf yangi bo'lishi mumkin bo'lgan har qanday narsadir .
Bu holda konstruktor hech qanday argumentlarni qabul qilmaydi, lekin siz undan argumentlarni qabul qiladigan konstruktorlarni e'lon qilish uchun ham foydalanishingiz mumkin. Masalan, StringDatabase-ni ixtiyoriy boshlang'ich holatni olish uchun yangilaymiz :
sinf StringDatabase {
konstruktor ( ommaviy davlat : davlat = {}) {}
// ...
}
StringDatabase konstruktor imzosini quyidagicha yozishimiz mumkin :
interfeys StringDatabaseConstructor { yangi ( holat ?: Davlat ) : StringMa'lumotlar bazasi dan ( shtat : Shtat ) : StringMa'lumotlar bazasi }
Shunday qilib, sinf deklaratsiyasi nafaqat qiymat va tur darajalarida atamalar hosil qiladi, balki u tip darajasida ikkita atama hosil qiladi: biri sinf namunasini ifodalaydi; sinf konstruktorining o'zini ifodalovchi biri ( typeof turi operatori bilan mavjud).
Polimorfizm
Funktsiyalar va turlar singari, sinflar va interfeyslar umumiy turdagi parametrlarni, jumladan, standart va chegaralarni qo'llab-quvvatlaydi. Siz umumiy sinfni yoki interfeysingizni yoki ma'lum bir usulni qamrab olishingiz mumkin:
Do'stlaringiz bilan baham: |