๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TS

[TS] : ์ ‘๊ทผ ์ œํ•œ์ž

by ๊ถŒ์Šพํ–„ 2023. 8. 22.

์ ‘๊ทผ ์ œํ•œ์ž

 

์ ‘๊ทผ ์ œํ•œ์ž ?

TS ์—์„œ๋Š” ์ ‘๊ทผ ์ œํ•œ์ž(access modifiers)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.
์ ‘๊ทผ ์ œํ•œ์ž๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์—์„œ ํ•ด๋‹น ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

 


TS ์˜ ์ฃผ์š” ์ ‘๊ทผ ์ œํ•œ์ž

1. public

2. protected

3. private

 

public

public ์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๊ฐ’์ด๋‹ค.
๋ฉค๋ฒ„์— public ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

class Person { 
    public name: string;
    constructor(name: string) { this.name = name; }
}
const person = new Person("Alice");
console.log(person.name); // ์ ‘๊ทผ

 

public ํŠน์ง•

ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

์ž์‹ ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

 

protected:

protected ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ์„ค์ •๋œ ๋ฉค๋ฒ„๋Š”
ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฐ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

class Animal { 
	protected sound: string;
    constructor(sound: string) {
    	this.sound = sound;
    }
    
    makeSound() { console.log(this.sound); // ํด๋ž˜์Šค ๋ฐ ํ•˜์œ„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ }
}

class Dog extends Animal {
	constructor() { 
    	super("Bark");
    }
    
    bark() { 
    	this.makeSound(); // ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒ์†๋œ protected ๋ฉค๋ฒ„์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
    } 
}

const dog = new Dog();

console.log(dog.sound); // ์˜ค๋ฅ˜: protected ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
dog.bark(); // ํ•˜์œ„ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ

์ด๋Ÿฌํ•œ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ •๋ณด ์€๋‹‰(Encapsulation)์„ ์œ ์ง€ํ•˜๊ณ , ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

protected ํŠน์ง•

ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

์ž์‹ ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : X

 

private

private ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ์„ค์ •๋œ ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค.

class Person { 
    private age: number;
    constructor(age: number) { this.age = age; }

    getAge() { return this.age; // ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ }
}

const person = new Person(30);

console.log(person.age); // ์˜ค๋ฅ˜: ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
console.log(person.getAge()); // ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

private ํŠน์ง•

ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : O

์ž์‹ ํด๋ž˜์Šค๋‚ด๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : X

ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : X

 

#ts #utilitytype #public #protected #private

 

'TS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TS] : utility type  (0) 2023.08.22
[TS] : any unknown union  (0) 2023.08.21
[TS] : tuple enum  (0) 2023.08.18
[TS] : .d.ts  (0) 2023.08.17
[TS] : tsconfig.json  (0) 2023.08.17