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 ๊ฐ๋ฅ
'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 |