Skip to content

บทที่ 5: JavaScript & TypeScript

“บ้านที่มีแค่ผนังกับหลังคา ก็แค่ที่พักพิง บ้านที่มีไฟฟ้า คือบ้านที่มีชีวิต”

The Blueprint (พิมพ์เขียว)

Section titled “The Blueprint (พิมพ์เขียว)”

HTML คือโครงสร้าง CSS คือการตกแต่ง แต่ทั้งสองอย่างยัง “นิ่ง”

เว็บไซต์ที่ดีต้อง “ตอบสนอง”:

  • คลิกปุ่ม → บางอย่างเกิดขึ้น
  • พิมพ์ในช่อง → ข้อความปรากฏ
  • เลื่อนหน้า → Animation เล่น

JavaScript = ระบบไฟฟ้า ที่ทำให้บ้านมีชีวิต

The Construction Site (หน้างานก่อสร้าง)

Section titled “The Construction Site (หน้างานก่อสร้าง)”

⚡ JavaScript — ระบบไฟฟ้าของบ้าน

Section titled “⚡ JavaScript — ระบบไฟฟ้าของบ้าน”
// เมื่อกดสวิตช์ → ไฟเปิด
document.querySelector('#switch').addEventListener('click', () => {
document.querySelector('#light').classList.toggle('on');
});
// เมื่อพิมพ์ → แสดงผล
const input = document.querySelector('#search');
input.addEventListener('input', (e) => {
console.log('คุณกำลังค้นหา:', e.target.value);
});

🎯 JavaScript สิ่งที่ทำได้

Section titled “🎯 JavaScript สิ่งที่ทำได้”
Actionในบ้านในเว็บ
Clickกดสวิตช์กดปุ่ม
Inputหมุนวอลุ่มพิมพ์ข้อความ
Scrollเดินในบ้านเลื่อนหน้า
TimerนาฬิกาปลุกCountdown
Networkสั่งของออนไลน์ดึงข้อมูล API

🔷 TypeScript — มาตรฐานความปลอดภัยระบบไฟ

Section titled “🔷 TypeScript — มาตรฐานความปลอดภัยระบบไฟ”
// JavaScript - ไม่มี Type
function greet(name) {
return "Hello " + name;
}
greet(123); // ทำงานได้ แต่ผิดหลัก
// TypeScript - มี Type
function greet(name: string): string {
return "Hello " + name;
}
greet(123); // ❌ Error! ต้องเป็น string

TypeScript = Blueprint ระบบไฟ ที่ระบุว่าสายไหนต่อกับอะไร ห้ามต่อผิดประเภท

FeatureJavaScriptTypeScript
Type Safety
IDE Supportปานกลางดีมาก
Bug Preventionน้อยมาก
Build Stepไม่จำเป็นจำเป็น

Material Selection (เลือกสเปกวัสดุ)

Section titled “Material Selection (เลือกสเปกวัสดุ)”
// Arrow Functions
const add = (a, b) => a + b;
// Destructuring
const { name, age } = user;
// Template Literals
const message = `Hello ${name}, you are ${age}`;
// Async/Await
const fetchUser = async () => {
const response = await fetch('/api/user');
const data = await response.json();
return data;
};
// Spread Operator
const newArray = [...oldArray, newItem];
// Type Annotations
let name: string = "สมชาย";
let age: number = 25;
let isActive: boolean = true;
// Interface
interface User {
id: number;
name: string;
email: string;
avatar?: string; // optional
}
// Function Types
function processUser(user: User): void {
console.log(user.name);
}

Architect’s Note (บันทึกสถาปนิก)

Section titled “Architect’s Note (บันทึกสถาปนิก)”
  1. ใช้ TypeScript ในโปรเจกต์จริง — Bug ลดลงมากกว่า 40%
  2. หลีกเลี่ยง any — ถ้าใช้ any ไปทำไมต้อง TypeScript
  3. อย่าใช้ var — ใช้ const และ let แทน
  1. Enable Strict Mode ใน TypeScript
  2. ใช้ ESLint + Prettier สำหรับ Code Style
  3. เขียน Type Definitions สำหรับ API Responses