Programming TypeScript


Download 1.81 Mb.
bet62/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   58   59   60   61   62   63   64   65   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

Cheklangan polimorfizm


U shbu bo'limda men misol sifatida ikkilik daraxtdan foydalanmoqchiman. Agar siz ilgari binar daraxtlar bilan ishlamagan bo'lsangiz, tashvishlanmang. Bizning maqsadlarimiz uchun asoslar:

  • Ikkilik daraxt - bu ma'lumotlar strukturasining bir turi.

  • Ikkilik daraxt tugunlardan iborat.

  • Tugun qiymatga ega va ikkitagacha tugunga ishora qilishi mumkin.

  • Tugun ikki turdan biri bo'lishi mumkin: barg tugunlari (uning farzandlari yo'qligini bildiradi) yoki ichki tugun (ya'ni kamida bitta bola bor).

T turiga tegishli va u bir xil T turiga ega bo'lishi kerak " deyishning o'zi etarli emas. Ba'zan siz " U turi kamida T bo'lishi kerak " demoqchisiz . Biz buni U ga yuqori chegara qo'yish deb ataymiz .
Nima uchun biz buni qilishni xohlashimiz mumkin? Aytaylik, biz ikkilik daraxtni amalga oshirmoqdamiz va uchta turdagi tugunga egamiz:

  1. Oddiy TreeNode s

  2. LeafNode s, ular bolalari bo'lmagan TreeNodelardir

  3. InnerNode s, ular bolalarga ega bo'lgan TreeNode s. Keling, tugunlarimiz turlarini e'lon qilishdan boshlaylik:

turi TreeNode = { qiymat : string
}
turi LeafNode = TreeNode & {
isLeaf : rost
}
turi Ichki tugun = TreeNode & {
bolalar : [ TreeNode ] | [ TreeNode , TreeNode ]}
Biz aytmoqchi bo'lgan narsa: TreeNode - bu yagona xususiyatga ega ob'ekt, value . The
LeafNode turi TreeNode-ga ega bo'lgan barcha xususiyatlarga ega , shuningdek, isLeaf har doim ham haqiqatdir . InnerNode shuningdek, TreeNode ning barcha xususiyatlariga, shuningdek , bir yoki ikkita bolaga ishora qiluvchi bolalar xususiyatiga ega.
TreeNode ni qabul qiluvchi va uning qiymatini xaritalashtirib, yangi TreeNode ni qaytaradigan mapNode funksiyasini yozaylik . Biz quyidagi tarzda foydalanishimiz mumkin bo'lgan mapNode funksiyasini ishlab chiqmoqchimiz :

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   58   59   60   61   62   63   64   65   ...   206




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling