#4 Classes and Interfaces
#4.0 Classes
TS๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ
class Player {
constructor (
private firstName: string, // JS ์๋ private๊ฐ ์์ TS์์๋ง ์๋
private lastName: string,
public nickname: string
) {}
}
const nic = new Player("nic", "las", "n")
nic.firstname // TS์์์๋ ์ํจ private ์ด๊ธฐ์
nic.nicname // ์๋Abstract - ๋ค๋ฅธ ํด๋์ค๊ฐ ์์๋ฐ์ ์ ์๋ ํด๋์ค, ์ง์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ ์๋ ์์ JS์๋ ์๋ํ์ง ์์ Only TS
abstract class User { // ์ถ์ ํด๋์ค
constructor (
private firstName: string,
private lastName: string,
public nickname: string
) {}
abstract getNickName(): void // absc- ์์ absc ๊ฐ๋ฅ, class์์ ๋ฐ๋์ ๊ตฌํํด์ผํจ
getFullName(){ // ์ถ์ ๋ฉ์๋
return `${this.firstName} ${this.lastName}`
}
}
class Player extends User {
...
}
const nic = new Player("nic", "las", "n")
nic.getFullName() // "nic las"์ ๊ทผ ๊ฐ๋ฅ ์์น
private
O
X
X
protected
O
O
X
public
O
O
O
=> TS์์ ์ฒดํฌํ๊ณ JS์์๋ ๋ณด์ด์ง ์์
#4.1 Recap
4.0 ๋ณต์ต
+ mission
#4.2 Interfaces
ํ์ ๊ณผ ๋น์ทํ์ง๋ง ๋ค๋ฆ
Interface - ์ค์ง ํ๊ฐ์ง ์ฉ๋๋ก ์ค๋ธ์ ํธ์ ๋ชจ์์ ํน์ ํ๊ธฐ ์ํด ์ฌ์ฉ
type๊ณผ interface๋ ์ค๋ธ์ ํธ์ ๋ชจ์์ ํน์ ํ๊ธฐ ์ํ ์ฉ๋์ด๋ฏ๋ก ๊ฑฐ์ ๊ฐ์
interface๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ์ ํ์ฉํด ๋์์ธ๋์๊ณ , ํ์ ์ ๋ ์ ์ฐํ๊ณ ๊ฐ๋ฐฉ์ ์
#4.3 Interfaces part Two
์ธํฐํ์ด์ค๋ ๊ฐ๋ณ๋ค. ์ปดํ์ผํ๋ฉด JS๋ก ๋ณํ์ง ์๊ณ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋ ์ฝ๋๋ ๊ฐ์ ๋ด์ฉ์ abstract๋ก ์์ฑํ์ ๋์ interface๋ก ์์ฑํ์ ๋์ ์ฐจ์ด๋ค. ์ด๋ ๊ฒ ๋ณด๋ฉด ํฐ ์ฐจ์ด ์์ด๋ณด์ด์ง๋ง, JS๋ก ์ปดํ์ผํ ๋ด์ฉ์ ์ดํด๋ณด๋ฉด ๋ถํ์ํ User class๊ฐ ์ฌ๋ผ์ ธ์์์ ํ์ธํ ์ ์๋ค. ์ด๋งํผ ๋ ๊ฐ๋ฒผ์์ก๋ค๋ ์๋ฏธ์ด๋ค.


#4.4 Recap
Type๊ณผ Interface ๋ ์ค๋ธ์ ํธ์ ๋ชจ์์ ์ง์ ํ๋ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ถ๊ฐ์ ์ธ ๋ถ๋ถ์์ ์ฐจ์ด๊ฐ ์๊ธด๋ค.
์ถ์ class๋ฅผ ๋์ฒดํ๋ค.
=> ํ์ ์คํฌ๋ฆฝํธ์ ์ค๋ธ์ ํธ์ ๋ชจ์์ ์๋ ค์ฃผ๊ณ ์ถ์ผ๋ฉด interface, ๋๋จธ์ง ์ํฉ์์๋ type์ ์ฌ์ฉํด๋ผ~
#4.5 Polymorphism
๋คํ์ฑ - ๋ค๋ฅธ ๋ชจ์์ ์ฝ๋๋ฅผ ๊ฐ์ง ์ ์๊ฒ ํ๋๊ฒ. ์ ๋ค๋ฆญ(placeholder ํ์ )์ ์ฌ์ฉํ๋ค.
Last updated
Was this helpful?