ເປັນຫຍັງຕ້ອງ TypeScript… [ep.2]

phatsss
VtCamp
Published in
3 min readNov 13, 2018

ຫຼັງຈາກທີ່ໄດ້ປ່ອຍບົດຄວາມ “ເປັນຫຍັງຕ້ອງ TypeScript… [ep.1]” ໄປກໍ່ດົນພໍສົມຄວນ ເນື່ອງຈາກມີວຽກຕ້ອງເຮັດຫຼາຍຕໍ່ຫຼາຍຢ່າງ ເຊິ່ງມື້ນີ້ມີເວລາກໍ່ເລີຍຈະມາຂຽນ ep.2 ຕໍ່ໃຫ້ຈົບ ເພື່ອບໍ່ເປັນການເສຍເວລາ ສະນັ້ນໄປກັນເລີຍ.

ໃນ ep ນີ້ເຮົາຈະມາເວົ້າເຖິງການຂຽນ TypeScript ໃນຮູບແບບຂອງ OOP ຫຼື ທີ່ເຮົາຮູ້ດີໃນນາມການຂຽນແບບອອບເຈັກນັ້ນເອງ.

ຕິດຕັ້ງ TypeScript ໃຫ້ຮຽບຮ້ອຍໂດຍໃຊ້ຄຳສັ່ງ:

npm install -g typescript

ຕິດຕັ້ງ ts-node ເພື່ອໃຊ້ run code ຂອງ TypeScript:

npm install -g ts-node

Class

ການໃຊ້ class ແບບງ່າຍໆໃນ TypeScipt

Constructors

ເປັນ method ທີ່ເຮັດວຽກເມື່ອມີການສ້າງອອບເຈັກ ( instance) ໃໝ່, ແຕ່ໂດຍທົ່ວໄປເຮົາຈະໃຊ້ໃນການກຳນົດຄ່າເລີ່ມຕົ້ນໃຫ້ກັບ object.

Abstract Classes

ເວົ້າໃຫ້ເຂົ້າໃຈງ່າຍເລີຍກໍ່ຄື: Abstract Classes ແມ່ນເປັນ class ພື້ນຖານທີ່ class ອື່ນສາມາດສືບທອດຄຸນສົມບັດຂອງມັນໄດ້, ແຕ່ມັນເອງບໍ່ສາມາດສ້າງອອບເຈັກໄດ້ໂດຍຕົງຜ່ານ new ງົງແມ່ນບໍ່ຊັ້ນເຮົາໄປເບິ່ງ code ກັນເລີຍ.

2 ລັກສະນະທີ່ສຳຄັນຂອງ abstract classes ໃນ TypeScript ຄື:

  • ສາມາດ implement method ຂອງມັນເອງ.
  • ສາມາດກຳນົດ method ທີ່ class ຕ່າງໆທີ່ມາສືບທອດຈຳເປັນຕ້ອງໃຊ້ໄດ້.

ດ້ວຍເຫດຜົນນີ້ເອງ, Abstract classes ຈຶ່ງຖືໄດ້ວ່າເປັນການເອົາແນວຄິດຂອງ interface ແລະ class ມາລວມກັນ.

Inheritance

ການສືບທອດຄຸນສົມບັດຈາກ class ແມ່ເຮົານຳໃຊ້ extends ໃນການສືບທອດ ແລະ ຖ້າ class ລູກມີການນິຍາມ constructor ຕ້ອງໃຊ້ super() ເພື່ອເອີ້ນ constructor ຈາກ class ແມ່ກ່ອນ

Accessors

ຄືການນຳໃຊ້ getter ແລະ setter ໃນການເຂົ້າເຖິງສະມາຊິກທີ່ເປັນ private, ໃນກໍລະນີທີ່ເຮົາບໍ່ຢາກໃຊ້ຄຳວ່າ set ຫຼື get ນຳໜ້າເວລາເຂົ້າເຖິງສະມາຊິກ ເຮົາກໍ່ພຽງແຕ່ໃສ່ _(underscore) ນຳໜ້າຊື່ຕົວປ່ຽນທີ່ເຮົາໄດ້ປະກາດໄວ້.

Access Modifiers

  1. public

ໝາຍເຖິງເຮົາສາມາດເຂົ້າເຖິງສະມາຊິກແຕ່ລະໂຕໄດ້ຈາກບ່ອນໃດກໍ່ໄດ້ ແລະ ບໍ່ວ່າຈະເປັນໃຜກໍ່ສາມາດ access ເຂົ້າໄດ້, ການນຳໃຊ້ public ຕ້ອງລະວັງເພາະວ່າຖ້າຫາກສະມາຊິກດັ່ງກ່າວເປັນຄຸນສົມບັດຂອງອອບເຈັກແລ້ວ ຖ້າຫາກໃສ່ຄ່າຜິດພາດເຂົ້າໄປຈະເຮັດໃຫ້ມີບັນຫາໄດ້.

ບັນຫາທີ່ຈະເກີດຄື: ການໃສ່ຄ່າທີ່ຜິດພາດເຂົ້າໄປເຊັ່ນການໃສ່ອາຍຸຜິດເຫຼົ່ານີ້ເປັນຕົ້ນ ດັ່ງນັ້ນເວລານຳໃຊ້ຄວນຄຳນຶງໃຫ້ດີ.

2. Private

ເປັນການອະນຸຍາດໃຫ້ເຂົ້າເຖິງສະມາຊິກທີ່ຢູ່ໃນ class ນີ້ຈາກໃນ class ດຽວກັນເທົ່ານັ້ນ, ດັ່ງນັ້ນ ຕໍ່ໃຫ້ນັ່ງອ້ອນວອນເທົ່າໃດ ຖ້າຈະເຂົ້າເຖິງຈາກນອກ class ແລ້ວ private ກໍ່ບໍ່ມີວັນໃຈອ່ອນ.

ກໍລະນີທີ່ປ້ອນຄ່າຜິດ(ປ້ອນອາຍຸເປັນ -5)ຈະ undefined ທັນທີ

3. Protected

ເປັນການອະນຸຍາດໃຫ້ເຂົ້າເຖິງສະມາຊິກທີ່ຢູ່ໃນ class ນີ້ຈາກໃນ class ດຽວກັນ ແລະ class ລູກທີ່ສືບທອດມັນເທົ່ານັ້ນ.

ເມື່ອຄິດຢາກລອງຂອງຊິເກີດຫຍັງຂຶ້ນ:

Static Properties

ໂດຍປົກກະຕິເຮົາໃຊ້ new ໃນການສ້າງອອບເຈັກແຕ່ລະຄັ້ງ, ສະນັ້ນຈຶ່ງເວົ້າໄດ້ວ່າ property ທັງໝົດທີ່ຢູ່ໃນ class ນັ້ນເປັນຂອງອອບເຈັກ. ຖ້າເຮົາຢາກໃຫ້ property ທີ່ຖືວ່າເປັນຄຸນສົມບັດຂອງ class ເດລະເຮົາຈະເຮັດແນວໃດ? ນີ້ລະເຫດຜົນທີ່ static ຕ້ອງເຂົ້າມາ (ຢ່າງຫຼໍ່…).

ຖ້າເຮົາຢາກບອກວ່າຕົວປ່ຽນໃດໜຶ່ງມີຊະນິດຂໍ້ມູນແມ່ນອອບເຈັກຂອງ class ໃດໜຶ່ງ.

ex: ຕົວປ່ຽນ car1 ມີຊະນິດຂໍ້ມູນເປັນອອບເຈັກຂອງ class car()

ຖ້າເຮົາຢາກບອກວ່າຕົວປ່ຽນ car1 ມີຊະນິດຂໍ້ມູນເປັນ class car() ບໍ່ແມ່ນມີຊະນິດຂໍ້ມູນເປັນອອບເຈັກຂອງ class car().

ເຮົານຳໃຊ້ typeof ໃນການບອກວ່າຕົວປ່ຽນດັ່ງກ່າວ ມີຊະນິດຂໍ້ມູນເປັນ class car()

ເຫດຜົນວ່າເປັນຫຍັງຕ້ອງ TypeScript: ສຳຫຼັບຂ້າພະເຈົ້າເອງກໍ່ຍ້ອນມັນຄອບຄຸມ JavaScript ເວີຊັ້ນໃໝ່ທັງໝົດ ແລະ ຍັງມີບາງຟັງຊັ່ນທີ່ເສີມຄວາມຫຼໍ່ຂຶ້ນຕື່ມອີກ, ທີ່ສຳຄັນກໍ່ຄື: ຂຽນໜ້ອຍໄດ້ຫຼາຍ ອ່ານງ່າຍບໍ່ສັບສົນ

ເປັນຫຍັງຕ້ອງ OOP:

OOP TypeScript

ເຮົາລອງ compile code ຂ້າງເທິງ

JavaScript

ສະຫຼຸບ: ສຳຫຼັບຜູ້ທີ່ມີພື້ນຖານດ້ານການຂຽນ OOP ມາແນ່ກໍ່ຈະເຂົ້າໃຈໃນຫຼັກການບໍ່ຍາກເລີຍ, ແຕ່ຖ້າໃຜຍັງບໍ່ມີພື້ນຖານມາກ່ອນ ການຂຽນໃນຮູບແບບ OOP ມັນກໍ່ບໍ່ຍາກຢ່າງທີ່ຄິດຂໍພຽງທ່ານລອງໃຫ້ເວລາ ແລະ ຄວາມສຳຄັນກັບມັນລອງເບິ່ງ.

--

--