วัตถุ window ใน TypeScript
บทความนี้อธิบายถึงอ็อบเจกต์ window ใน TypeScript
คุณสามารถเรียนรู้เกี่ยวกับพร็อพเพอร์ตี้และเมธอดของอ็อบเจกต์ window
ผ่านโค้ด
YouTube Video
วัตถุ window ใน TypeScript
window
เป็นออบเจ็กต์แบบ global ใน TypeScript และ JavaScript ที่แทนหน้าต่างเบราว์เซอร์ทั้งหมด มีคุณสมบัติและเมธอดมากมายเพื่อเข้าถึง API ของเบราว์เซอร์, ปรับแต่ง DOM (Document Object Model), ใช้ตัวจับเวลา, พื้นที่เก็บข้อมูล และคุณสมบัติอื่น ๆ
tsconfig.json และอ็อบเจกต์ window
ใน TypeScript เมื่อเข้าถึงวัตถุ window
ฟีเจอร์แบบ global เฉพาะเบราว์เซอร์จะมีการกำหนดประเภท ซึ่งช่วยให้สามารถเติมคำอัตโนมัติในตัวแก้ไขและตรวจสอบประเภทได้ ด้วยไฟล์กำหนดประเภทมาตรฐานของ TypeScript (lib.dom.d.ts
) ทำให้ TypeScript รู้จักคุณสมบัติและเมธอดต่างๆ ของวัตถุ window
เมื่อใช้ TypeScript โดยทั่วไปจะมีไฟล์ tsconfig.json
อยู่ที่รากของโปรเจ็กต์ ไฟล์นี้ใช้สำหรับระบุออปชันของคอมไพเลอร์และขอบเขตของไฟล์กำหนดชนิดข้อมูล
เมื่อทำงานกับ window
สิ่งสำคัญคือการเปิดใช้งาน การกำหนดชนิดข้อมูลของเบราว์เซอร์ (การกำหนดชนิดข้อมูล DOM) หากไม่มีสิ่งนี้ window
และ document
จะเกิดข้อผิดพลาดเกี่ยวกับชนิดข้อมูล
1{
2 "compilerOptions": {
3 "target": "es6",
4 "module": "esnext",
5 "strict": true,
6 "lib": ["es6", "dom"], // Enable DOM type definitions
7 "outDir": "./dist"
8 },
9 "include": ["src"]
10}
- โดยการระบุ
"lib": ["es6", "dom"]
ชนิดข้อมูลของwindow
และdocument
จะถูกจดจำและเติมคำอัตโนมัติอย่างถูกต้อง
คุณสมบัติและเมธอดหลักของ window
window.document
window.document
เป็นพร็อพเพอร์ตี้ที่ใช้เข้าถึง DOM ของหน้าเว็บ คุณสามารถดึงองค์ประกอบและเปลี่ยนแปลง DOM ได้
1console.log(window.document.title); // Display the title of the current document
- ในตัวอย่างนี้ จะมีการแสดงชื่อเรื่องของเอกสารปัจจุบัน
window.localStorage
/window.sessionStorage
window.localStorage
และwindow.sessionStorage
เป็นพร็อพเพอร์ตี้ที่ใช้เข้าถึงฟีเจอร์จัดเก็บข้อมูลซึ่งอนุญาตให้บันทึกข้อมูลของผู้ใช้ในเบราว์เซอร์
1window.localStorage.setItem('key', 'value'); // Save data
2const value = window.localStorage.getItem('key'); // Retrieve data
3console.log(value); // 'value'
- ในตัวอย่างนี้ ข้อมูลจะถูกบันทึกลงใน
localStorage
จากนั้นถูกเรียกกลับและแสดงผล
window.location
window.location
เป็นอ็อบเจกต์ที่ใช้ดึงและจัดการข้อมูลเกี่ยวกับ URL ปัจจุบัน คุณสามารถทำการเปลี่ยนเส้นทางหรือเปลี่ยน URL ได้
1console.log(window.location.href); // Display the current URL
2window.location.href = 'https://example.com'; // Redirect to another page
- ในตัวอย่างนี้ จะแสดง URL และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้ากระดานอื่น
window.setTimeout
/window.setInterval
window.setTimeout
และwindow.setInterval
เป็นเมธอดที่ใช้เรียกทำงานฟังก์ชันหลังจากดีเลย์หรือช่วงเวลาที่กำหนด
1window.setTimeout(() => {
2 console.log('This will be executed after 2 seconds');
3}, 2000);
- โค้ดนี้ทำงานเพื่อแสดงข้อความที่คอนโซลหลังจากผ่านไปสองวินาที
window.alert
/window.confirm
/window.prompt
alert
confirm
และprompt
ใช้แสดงกล่องโต้ตอบเพื่อแจ้งเตือนหรือขอข้อมูลจากผู้ใช้
1window.alert('Alert message');
- โค้ดนี้จะแสดงกล่องแจ้งเตือน (alert) เพื่อแจ้งข้อความ
เหตุการณ์ของอ็อบเจกต์ window
เนื่องจาก window
เป็นส่วนหนึ่งของ DOM คุณจึงสามารถรับฟังเหตุการณ์ต่างๆ ได้โดยตรง ใน TypeScript ชนิดข้อมูลจะเติมอัตโนมัติ ดังนั้นการใช้ชื่อเหตุการณ์หรือพร็อพเพอร์ตี้ที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด
เหตุการณ์เปลี่ยนขนาดหน้าต่าง
1window.addEventListener("resize", (event) => {
2 console.log("Window resized:", window.innerWidth, window.innerHeight);
3});
- โค้ดนี้จะแสดงความกว้างและความสูงใหม่ที่คอนโซลเมื่อขนาดหน้าต่างเปลี่ยนแปลง
เหตุการณ์คีย์บอร์ด
1window.addEventListener("keydown", (event: KeyboardEvent) => {
2 console.log(`Key pressed: ${event.key}`);
3});
- โค้ดนี้จะแสดงปุ่มที่กดในคอนโซล เมื่อผู้ใช้กดปุ่มที่แป้นพิมพ์
เหตุการณ์โหลดหน้าเว็บ
1window.addEventListener("load", () => {
2 console.log("Page fully loaded");
3});
- โค้ดนี้จะแสดงข้อความที่คอนโซลเมื่อหน้าเว็บโหลดเสร็จสมบูรณ์
หมายเหตุ
-
ใน TypeScript ชนิดของอ็อบเจกต์เหตุการณ์จะถูกเดาอัตโนมัติ ดังนั้นการระวังชนิดอย่าง
KeyboardEvent
หรือMouseEvent
จะทำให้โค้ดของคุณปลอดภัยมากขึ้น -
แนะนำให้ลบ event listener เมื่อไม่จำเป็นต้องใช้งานแล้ว คุณสามารถลบตัวฟัง (listener) ได้โดยใช้เมธอด
window.removeEventListener
1function handleClick() {
2 console.log("Clicked!");
3}
4
5// Add event listener
6window.addEventListener("click", handleClick);
7
8// Remove event listener
9window.removeEventListener("click", handleClick);
- โค้ดนี้แสดงตัวอย่างของการเพิ่มและลบตัวฟัง (listener) สำหรับเหตุการณ์คลิก
เมื่อเพิ่มคุณสมบัติที่กำหนดเอง
เมื่อเพิ่มคุณสมบัติที่กำหนดเองให้กับวัตถุ window
จำเป็นต้องมีการขยายประเภทใน TypeScript เพื่อหลีกเลี่ยงข้อผิดพลาดเกี่ยวกับประเภท
1// Add a custom property to the window
2interface Window {
3 myCustomProperty: string;
4}
5
6window.myCustomProperty = "Hello, World!";
7console.log(window.myCustomProperty); // "Hello, World!"
- โค้ดนี้เป็นตัวอย่างของการเพิ่มพร็อพเพอร์ตี้ที่กำหนดเองในอ็อบเจ็กต์
window
โดยใช้ TypeScript การกำหนดค่า และการแสดงผล
ข้อควรระวังเมื่อใช้วัตถุแบบ global window
เนื่องจากการตรวจสอบประเภทอย่างเข้มงวดของ TypeScript การพยายามใช้คุณสมบัติหรือเมธอดที่ไม่มีอยู่จะทำให้เกิดข้อผิดพลาด ตัวอย่างเช่น การพยายามเข้าถึงคุณสมบัติที่ไม่มีอยู่ในวัตถุ window
จะทำให้เกิดข้อผิดพลาด ดังนั้นคุณจึงจำเป็นต้องขยายประเภทให้เหมาะสม
ดังนั้น วัตถุ window
จึงมีบทบาทสำคัญในการเข้าถึงฟีเจอร์ต่าง ๆ ของแอปพลิเคชันเบราว์เซอร์ และใน TypeScript คุณสามารถใช้งานได้อย่างปลอดภัยโดยอาศัยการตรวจสอบประเภท
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย