250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • MySQL
  • ์ปดํฌ์ง€์…˜
  • ใ…ฃใ„ท
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

TypeScript/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript

[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] class์˜ getter์™€ setter

2022. 4. 18. 19:06
728x90
class User {
  firstName: string;
  lastName: string;
  fullName: string;
  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = `${firstName} ${lastName}`;
  }
}
let user = new User("Steve", "Jobs");
console.log(user.fullName); //Steve Jobs
console.log(user.firstName); //Steve
user.firstName = "Jimmy";
console.log(user.fullName); //Steve Jobs !!!
console.log(user.firstName); //Steve

user.fullName = "Pretty Jobs";
console.log(user.fullName); //Pretty Jobs
console.log(user.firstName); //Jimmy
console.log(user.lastName); //Jobs

ํ’€๋„ค์ž„์€ ์ƒ์„ฑ์ž์—์„œ ํ•œ๋ฒˆ ํ• ๋‹น๋œ ๋’ค๋กœ,

constructor๋กœ firstName๊ณผ lastName์„ ํ†ตํ•ด fullName์ด ์„ค์ •๋œ ๋’ค๋กœ  ํผ์ŠคํŠธ๋„ค์ž„ ํ˜น์€ ๋ผ์ŠคํŠธ๋„ค์ž„์˜ ๊ฐœ๋ณ„ ๋ณ€๊ฒฝ ์ง„ํ–‰ํ•˜์—ฌ๋„, ๊ทธ์— ๋”ฐ๋ฅธ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒˆ๋กœ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.(๊ทธ ํ”„๋กœํผํ‹ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๋Š” ์ด์ƒ,) ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด๋„ ๊ทธ ์ƒํƒœ๋กœ ๊ณ„์† ์ง€์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

์ด๋Ÿด ๋•Œ ๊ฒŒํ„ฐ์™€ ์„ธํ„ฐ๊ฐ€ ์œ ์šฉํ•˜๋‹ค. 

 

์›๋ณธ

class User {
  firstName: string;
  lastName: string;
  fullName: string;
  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = `${firstName} ${lastName}`;
  }
}

๋ณ€๊ฒฝ ํ›„(๋ฉค๋ฒ„๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋ฐ”๋กœ ์„ค์ •ํ•˜์ง€ ๋ง๊ณ ,

 

  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }

์œ„ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด

 

fullName์€ string ํƒ€์ž…์ด๊ณ ,

fullName์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

fullName์„ ํ˜ธ์ถœํ•˜๋ฉด ํ˜ธ์ถœํ•œ ์‹œ์ ์— firstName๊ณผ lastName์„ ๊ฒฐํ•ฉํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

 

๋ณ€๊ฒฝ ํฌ์ธํŠธ

  firstName: string;
  lastName: string;
  
  //fullName์€ string ํƒ€์ž…์ด๊ณ ,
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
}

 ๋น„๋ก ํ•จ์ˆ˜์˜ ํ˜•ํƒœ์ง€๋งŒ,  ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๋™์ผํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๋“ฏ์ด ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

class User {
  firstName: string;
  lastName: string;
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
}
let user = new User("Steve", "Jobs");
console.log(user.fullName); //Steve Jobs
console.log(user.firstName); //Steve
user.firstName = "Jimmy";
console.log(user.fullName); //Jimmy Jobs ๐Ÿ˜š๐Ÿ˜š๐Ÿ˜š
console.log(user.firstName); //Jimmy

์ด์ฒ˜๋Ÿผ ์„ธํ„ฐ์™€ ๊ฒŒํ„ฐ๋Š” ์ผ๋ฐ˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ด๋– ํ•œ ๊ณ„์‚ฐ์„ ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํด๋ž˜์Šค๋‚ด ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜์— private๋ฅผ ์จ์ฃผ๋Š” ๊ฒƒ์ด ์ œ์ผ ๊ฐ„๊ฒฐํ•˜๋‹ค.

  constructor(private firstName: string, private lastName: string) {
  }

 

 

์ด๋ ‡๊ฒŒ

class User {
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  constructor(private firstName: string, private lastName: string) {
  }
}

 constructor(private firstName: string, private lastName: string) {
  }

์ด๊ฑธ ๋ณด๋ฉด,

private firstName: string๋ฅผ ๋ณด๊ณ  ๋“ค์–ด์˜จ ์ฒซ๋ฒˆ์งธ ์ธ์ž๊ฐ€ ์ž๋™์œผ๋กœ this.firstName์œผ๋กœ ๋“ค์–ด๊ฐ„ ๊ฒฉ์ด ๋˜๊ณ 

private lastName: string๋ฅผ ๋ณด๊ณก ๋“ค์–ด์˜จ ๋‘๋ฒˆ์งธ ์ธ์ž๊ฐ€ ์ž๋™์œผ๋กœ this.lastName์œผ๋กœ ๋“ค์–ด๊ฐ„ ๊ฒฉ์ด ๋œ๋‹ค.

 

class User {
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  constructor(private firstName: string, private lastName: string) {
  }
}

์œ„ ์ฝ”๋“œ์™€ ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋™์ผํ•œ ์ฝ”๋“œ์ด๋‹ค.

๋‹น์—ฐํžˆ ์œ„ ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•˜๋‹ค.

class User {
  private firstName: string;
  private lasName: string;
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lasName = lastName;
  }
}

<์ถ”๊ฐ€ ์—ฐ์Šต>

class User {
  private internalAge = 20;
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  get age(): number {
    return this.internalAge;
  }
  set age(num: number) {
    this.internalAge = num;
  }
  constructor(private firstName: string, private lastName: string) {}
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด internalAge์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์ง€๋งŒ, 

age๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•  ์ˆ˜๊ฐ€ ์žˆ๊ฒŒ ๋œ๋‹ค.

class User {
  private internalAge = 20;
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }
  get age(): number {
    return this.internalAge;
  }
  set age(num: number) {
    this.internalAge = num;
  }
  constructor(private firstName: string, private lastName: string) {}
}
let user = new User("Steve", "Jobs");
console.log(user.fullName); //Steve Jobs
console.log(user.age); //20
user.age = 9;
console.log(user.age); //9

์‹ฌ์ง€์–ด ์ „๋‹ฌ๋œ ๊ฐ’์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

class User {
  private internalAge = 20;
  get fullName(): string {
    return `${this.firstName} ${this.lastName}`;
  }

  get age(): number {
    return this.internalAge;
  }
  set age(num: number) {
    if (num < 0) {
      throw Error("์Œ์ˆ˜์˜ ๋‚˜์ด๋ž€ ์—†์–ด!");
    }
    this.internalAge = num;
  }
  constructor(private firstName: string, private lastName: string) {}
}
let user = new User("Steve", "Jobs");
console.log(user.fullName); //Steve Jobs
console.log(user.age); //20
user.age = 9;
console.log(user.age); //9
user.age = -9;
console.log(user.age);

<์—ฐ์Šต ๊ฒฐ๊ณผ>

  class User {
    private static cloth: boolean = true;
    private internalAge: number = 10;
    get age():number {
      return this.internalAge;
    }
    set age(newAge: number) {
      if (num < 0) {
      throw Error("์Œ์ˆ˜์˜ ๋‚˜์ด๋ž€ ์—†์–ด!");
    }
      this.internalAge = newAge;
    }
    get fullName():string {
      return `${this.firstName}${this.lastName}`;
    }
    constructor(private firstName: string, private lastName: string) {}
  }
  let user1 = new User("ํ™", "๊ธธ๋™");
  console.log(user1.fullName);//ํ™๊ธธ๋™
  user1.age = 18;
  console.log(user1.age);//18

getter setter์˜ ํšจ์šฉ : ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ + ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฐ€๋Šฅ(๋‚˜์ด์—์„œ ์Œ์ˆ˜ ๊ฑฐ๋ฅด๊ธฐ) + ์‹ฌ์ง€์–ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜๊ฐ€๋Šฅ(fullName์˜ ์˜ˆ์‹œ) ์ ์ ˆํ•˜๊ฒŒ ํด๋ž˜์Šค๋ฅผ ์บก์Аํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ๋„์™€์ฃผ์–ด ๋” ๋›ฐ์–ด๋‚œ OOP ๊ฐ€๋Šฅ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'TypeScript > ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์ง€์›, ๋ช…์‹œ  (0) 2022.04.19
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] this ๊ด€๋ จ ์˜ค๋ฅ˜  (0) 2022.04.19
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  ๋งŒ๋“ค๊ธฐ : encapsulation  (0) 2022.04.18
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ ˆ์ฐจ์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  vs ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹   (0) 2022.04.18
[ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ „์šฉ ์˜ˆ์‹œ] ๊ฐ์ฒด์ง€ํ–ฅ 4๊ฐ€์ง€ ์›์น™  (0) 2022.04.17
    'TypeScript/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์ง€์›, ๋ช…์‹œ
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] this ๊ด€๋ จ ์˜ค๋ฅ˜
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  ๋งŒ๋“ค๊ธฐ : encapsulation
    • [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ ˆ์ฐจ์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  vs ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹ 
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”