0Pricing
TypeScript Academy · บทเรียน

พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์

ใช้ readonly และรูปแบบย่อของพร็อพเพอร์ตีในคอนสตรักเตอร์

พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์ เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

เริ่มต้นใช้งาน

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

readonly กับพร็อพเพอร์ตีของคลาส

ประกาศพร็อพเพอร์ตีเป็น readonly เพื่อให้กำหนดค่าได้หนึ่งครั้งในตัวสร้าง แต่ป้องกันการเปลี่ยนแปลงในภายหลัง
class Invoice {
  readonly invoiceId: string;
  constructor(id: string) { this.invoiceId = id; }
}
const inv = new Invoice('INV-001');
// inv.invoiceId = 'INV-002'; // Error!

readonly ในอินเทอร์เฟซ

readonly ยังใช้ในอินเทอร์เฟซและชนิดข้อมูลออบเจ็กต์ได้ เพื่อป้องกันการกำหนดค่าพร็อพเพอร์ตีใหม่
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 5, y: 10 };
// p.x = 0; // Error

พร็อพเพอร์ตีพารามิเตอร์

เติมตัวปรับการเข้าถึงหน้าพารามิเตอร์ของตัวสร้าง เพื่อประกาศพร็อพเพอร์ตีและกำหนดค่าให้ในขั้นตอนเดียว
class Product {
  constructor(
    public name: string,
    public price: number,
    private sku: string
  ) {} // no need to write this.name = name; etc.
}

พร็อพเพอร์ตีพารามิเตอร์แบบ readonly

ใช้ `readonly` ร่วมกับตัวปรับการเข้าถึงสำหรับพร็อพเพอร์ตีพารามิเตอร์
class Config {
  constructor(
    public readonly host: string,
    public readonly port: number = 3000
  ) {}
}

การเริ่มต้นค่าในการประกาศ

คุณสามารถเริ่มต้นค่าพร็อพเพอร์ตี readonly ตั้งแต่จุดที่ประกาศได้ และจะไม่สามารถเปลี่ยนแปลงหลังจากนั้น
class AppVersion {
  readonly version: string = '1.0.0';
  readonly buildDate: Date = new Date();
}

readonly กับ const

`const` ใช้สำหรับตัวแปรที่มีขอบเขตระดับบล็อก ส่วน `readonly` ใช้สำหรับพร็อพเพอร์ตีของคลาสและสมาชิกของชนิดข้อมูลออบเจ็กต์ ทั้งสองใช้กับขอบเขตที่แตกต่างกัน
const API_KEY = 'secret'; // block variable
class Service {
  readonly key: string = API_KEY; // class property
}

ชนิดข้อมูลออบเจ็กต์แบบอ่านอย่างเดียว

ชนิดข้อมูลยูทิลิตี `Readonly` ทำให้พร็อพเพอร์ตีทั้งหมดของ T เป็นแบบอ่านอย่างเดียว เหมาะสำหรับสร้างภาพสถานะที่เปลี่ยนแปลงไม่ได้
interface User { name: string; age: number; }
const frozen: Readonly<User> = { name: 'Alice', age: 30 };
// frozen.name = 'Bob'; // Error

readonly ไม่ได้ทำให้ข้อมูลถูกตรึงแบบลงลึก

เช่นเดียวกับ ReadonlyArray, readonly ป้องกันเฉพาะการกำหนดค่าพร็อพเพอร์ตีใหม่เท่านั้น ไม่ได้ป้องกันการเปลี่ยนแปลงออบเจ็กต์ที่พร็อพเพอร์ตีนั้นอ้างถึง
class Team {
  readonly members: string[] = [];
}
const t = new Team();
t.members.push('Alice'); // Allowed — the array itself is mutable!
// t.members = []; // Error — can't reassign the property

พร็อพเพอร์ตีพารามิเตอร์ช่วยลดโค้ดซ้ำซ้อน

หากไม่ใช้พร็อพเพอร์ตีพารามิเตอร์ คุณต้องประกาศฟิลด์ ประกาศพารามิเตอร์ของตัวสร้าง และกำหนดค่าให้ฟิลด์เอง แต่เมื่อใช้พร็อพเพอร์ตีพารามิเตอร์ บรรทัดเดียวจะทำทั้งสามอย่าง
// Without parameter properties (verbose)
class A {
  private x: number;
  constructor(x: number) { this.x = x; }
}
// With parameter properties (concise)
class B {
  constructor(private x: number) {}
}

เมื่อใดควรหลีกเลี่ยงพร็อพเพอร์ตีพารามิเตอร์

บางทีมหลีกเลี่ยงพร็อพเพอร์ตีพารามิเตอร์ในคลาสขนาดใหญ่ เพราะการประกาศพร็อพเพอร์ตีจะถูกซ่อนไว้จากส่วนเนื้อหาของคลาส ทำให้อ่านภาพรวมได้ยากขึ้น

ตรวจสอบอย่างรวดเร็ว

เมื่อใช้พร็อพเพอร์ตีพารามิเตอร์ใน TypeScript ข้อใดเกี่ยวกับตัวปรับ readonly ที่ยังคงเป็นจริง

สรุปทบทวน

readonly ป้องกันการเปลี่ยนแปลงพร็อพเพอร์ตีหลังการสร้าง พร็อพเพอร์ตีพารามิเตอร์ ซึ่งประกอบด้วยตัวปรับการเข้าถึงและชื่อพารามิเตอร์ จะประกาศและเริ่มต้นค่าพร็อพเพอร์ตีในบรรทัดเดียว ใช้ทั้งสองอย่างร่วมกันเพื่อออกแบบคลาสที่กระชับและเปลี่ยนแปลงไม่ได้

คำถามที่พบบ่อย

บทเรียน “พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์”

ใช้ readonly และรูปแบบย่อของพร็อพเพอร์ตีในคอนสตรักเตอร์ คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม

ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คลาสและคอนสตรักเตอร์ของ TypeScript
  2. ตัวปรับแต่ง public, private และ protected
  3. พร็อพเพอร์ตี readonly และพร็อพเพอร์ตีของพารามิเตอร์
  4. การใช้อินเทอร์เฟซกับคลาส
← กลับไปที่ TypeScript Academy