Linter นั้นคือเครื่องมือที่ช่วยให้ตรวจสอบลักษณะการเขียน Code ว่าเหมาะสมกับ Best Practices ที่ทาง Community ต่างๆแนะนำหรือไม่ ซึ่งจุดประสงค์หลักเพื่อช่วยให้ Source Code ของทั้งโปรเจคนั้นมีความ
- อ่านง่าย และไปในทิศทางเดียวกัน
- ดูแล แก้ไขง่าย
- แก้ปัญหา Error แบบพื้นฐาน
โดยสำหรับ TypeScript นั้นgเครื่องมือนี้มีชื่อว่า TsLint
การติดตั้งก็ใช้ npm เจ้าเก่า
$ npm install tslint typescript
จากนั้นก็ทำการสร้าง tslint.json ซึ่งจะเป็นไฟล์หลักที่ใช้ในการ Config ค่าต่างๆของ TsLint
$tslint –init
ลองเปิดดูไฟล์ tslint.json เราก็จะเห็นว่าทางค่าปกติที่ติดตั้งมานั้นมีกฏอะไรบ้าง ซึ่งใน version 4.4.2 ที่ผมใช้นั้นมันซัพพอร์ท JavaScript ด้วย
กับอีกส่วนนึงคือ Node สำหรับ TypeScript ที่ใช้ชื่อ attribute ว่า rules เฉยๆ
ทดสอบกับ Code ตัวอย่าง
ที่นี้มาลองเล่นกันกับ Code ตัวอย่างแบบง่ายๆกับ main.ts
// main.ts
class HERO{
private name = 'HERO'
public attack()
{
console.log(`${this.name} : do attack`);
}
}
var player = new HERO();
player.attack();
หลังจาก compiled .ts ออกมาเป็น .js ก็จะออกมาเป็น
// main.js
var HERO = (function () {
function HERO() {
this.name = 'HERO';
}
HERO.prototype.attack = function () {
console.log(this.name + " : do attack");
};
return HERO;
}());
var player = new HERO();
player.attack();
ลองรันดูก็ได้ผลออกมาตามนี้ครับ ซึ่งก็ถูกต้องดีหมายความว่า Code เรารันได้ดี 🙂
ทีนี้ลองมารัน TsLint เพื่อดูว่า Code ของเรา 10 บรรทัดเนี่ยมันเขียนมาโอเคมั้ยกัน
$ tslint -c tslint.json *.ts -t stylish
ผลออกมากโดนไป 5 เรื่องครับ tslint จะรายงานมาว่าเราเขียนไม่ดียังไง ที่บรรทัดไหน ตัวอักษรที่เท่าไหร่
เรื่องที่เราโดนรายงานครั้งนี้คือ
- ใช้ var แทนที่จะเป็น let หรือ const เพราะในโลกของ TypeScript เราแนะนำกันแบบนี้
- ลืมเว้นวรรค!!
- ใส่วงเล็บปีกกาเปิดผิดที่!@!#
- ตัวแปร String เราดันใช้ single quote ” แทนที่จะเป็น dobule quotes “” (ตามที่กำหนดไว้ใน tslint.json)
- ลืมเครื่องหมาย semi colon
จะเห็นว่าสิ่งที่มันรายงานผลมานั้นก็ดูดีมีประโยชน์ครับ(มั้ย?)
ที่นี้เรามาดู Code หลังจากแก้ไขไปแล้วดีกว่าเนอะ
จากรูปด้านซ้ายและขวาที่เหมือนเล่นเกมจับผิด จะเห็นได้ว่าการทำ Linter นั้นช่วยให้ Code ของเรานั้นดูเป็นระเบียบมากขึ้น ยิ่งในกรณีที่ในโปรเจคมี Developer หลายๆคน อาจะใช้ Linter นั้นจะช่วยให้ Code ที่ถูกเขียนมานั้นเป็นไปในแนวทางเดียวกันมากขึ้น
การทำให้ Software นั้น Maintain ได้ง่ายและมีคุณภาพ เป็นเกียรติ (Duty) ของ Developer นะครับ 🙂