๐Ÿ“šย Reference


๐Ÿ“œย Chapter


Class

interface & type

private


class Users {
  private secret: string = "๋‚ด ๋น„๋ฐ€๋ฒˆํ˜ธ";
}

const user = new Users();

// โŒ ์—๋Ÿฌ: TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ฟœ์Šต๋‹ˆ๋‹ค.
console.log(user.secret); 

// ๊ผผ์ˆ˜ 1: ํƒ€์ž…์„ ์ž„์˜๋กœ ๋ฐ”๊พธ๋ฉด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
console.log((user as any).secret); // "๋‚ด ๋น„๋ฐ€๋ฒˆํ˜ธ" ์ถœ๋ ฅ๋จ!

// ๊ผผ์ˆ˜ 2: ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์“ฐ๋ฉด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
console.log(user['secret']); // "๋‚ด ๋น„๋ฐ€๋ฒˆํ˜ธ" ์ถœ๋ ฅ๋จ!

TypeScript์˜ private, JavaScript์˜ # (Private Field) - ๋น„๊ต


ํŠน์ง• TypeScript private JavaScript # (Private Field)
์ฒดํฌ ์‹œ์  ์ปดํŒŒ์ผ ์‹œ์  (์ฝ”๋“œ ๋นŒ๋“œํ•  ๋•Œ) ๋Ÿฐํƒ€์ž„ ์‹œ์  (๋ธŒ๋ผ์šฐ์ €/Node.js์—์„œ ์‹คํ–‰ํ•  ๋•Œ)
๋Ÿฐํƒ€์ž„ ๊ฐ•์ œ๋ ฅ ์—†์Œ (JS๋กœ ๋ณ€ํ™˜๋˜๋ฉด ์ผ๋ฐ˜ public์ฒ˜๋Ÿผ ๋ฐ”๋€œ) ์žˆ์Œ (์‹คํ–‰ ์ค‘์—๋„ ์ ˆ๋Œ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€)
๋ฌธ๋ฒ• private myField: string; #myField: string;
๋Œ€๊ด„ํ˜ธ ์ ‘๊ทผ ๊ฐ€๋Šฅ (obj['myField']๋กœ ์šฐํšŒ ๊ฐ€๋Šฅ) ๋ถˆ๊ฐ€๋Šฅ (๋ฌธ๋ฒ• ์—๋Ÿฌ ๋ฐœ์ƒ)
์ถœ์‹œ ์‹œ๊ธฐ TypeScript ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ง€์› ECMAScript 2022(ES2022) ํ‘œ์ค€ ์ŠคํŽ™