การควบคุมโครงสร้างออบเจ็กต์ใน TypeScript

TypeScript ยังควบคุมโครงสร้างของออบเจ็กต์อีกด้วย สมมติว่าเราประกาศออบเจ็กต์ user ของเรา:

typescriptlet user = {name: 'john', age: 30};

ในขณะที่ประกาศ TypeScript จะจดจำว่าในออบเจ็กต์ของเรามีคีย์ 'name' และ 'age' จากนั้นจึงควบคุมให้ตัวแปรเก็บออบเจ็กต์ที่มีคีย์เหล่านี้เท่านั้น

การพยายามเขียนออบเจ็กต์อื่นลงในตัวแปรจะทำให้เกิดข้อผิดพลาดในการคอมไพล์ ลองมาทดสอบกัน ลองเขียนออบเจ็กต์ที่ขาดคีย์ไปลงในตัวแปร:

typescriptuser = {name: 'eric'}; // ข้อผิดพลาด

ลองเขียนออบเจ็กต์ใหม่ที่มีคีย์เหมือนกัน แต่มีคีย์เพิ่มเติมลงในตัวแปร:

typescriptuser = {name: 'eric', age: 40, salary: 300}; // ข้อผิดพลาด

และตอนนี้ลองเขียนออบเจ็กต์ที่มีเฉพาะคีย์ 'name' และ 'age' ลงในตัวแปร:

typescriptuser = {name: 'eric', age: 40}; // ทำงานได้
Задание 1

โดยไม่ต้องรันโค้ด จงกำหนดว่าผลลัพธ์ของการทำงานโค้ดจะเป็นอย่างไร:

typescriptlet date = {year: 2025, month: 12, day: 31};
date = {year: 2025, month: 12};
Задание 2

โดยไม่ต้องรันโค้ด จงกำหนดว่าผลลัพธ์ของการทำงานโค้ดจะเป็นอย่างไร:

typescriptlet date = {year: 2025, month: 12, day: 31};
date = {year: 2025, month: 12, date: 7};