Jieunny의 λΈ”λ‘œκ·Έ

[TS] 객체와 νƒ€μž… λ³Έλ¬Έ

Study/TypeScript

[TS] 객체와 νƒ€μž…

Jieunny 2023. 2. 1. 16:05

πŸ“£  νƒ€μž…μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜ μ„ μ–Έλ¬Έ

πŸ“ let κ³Ό const ν‚€μ›Œλ“œ

let name = 'jieun'

➰ 값이 μˆ˜μ‹œλ‘œ 변경될 수 μžˆλ‹€.

 

const name = 'jieun'

➰ λ³€μˆ˜κ°’μ΄ μ ˆλŒ€ λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

πŸ“ νƒ€μž… 주석

let name: string = 'jieun'
let b: boolean = true

n = 'a' // μ—λŸ¬
b = false

➰ let으둜 μ„ μ–Έν•œ λ³€μˆ«κ°’μ€ νƒ€μž… μ£Όμ„μœΌλ‘œ λͺ…μ‹œν•œ νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” κ°’μœΌλ‘œλ§Œ λ°”κΏ€ 수 μžˆλ‹€.

 

πŸ“ νƒ€μž… μΆ”λ‘ 

➰ λŒ€μž… μ—°μ‚°μž('=') 였λ₯Έμͺ½ 값에 따라 λ³€μˆ˜μ˜ νƒ€μž…μ„ μ§€μ •ν•˜λŠ” 것

let n = 1	// n의 νƒ€μž…μ„ number둜 νŒλ‹¨
let b = true	// b의 νƒ€μž…μ„ boolean으둜 νŒλ‹¨

 

πŸ“ any νƒ€μž…

➰ κ°’μ˜ νƒ€μž…κ³Ό λ¬΄κ΄€ν•˜κ²Œ μ–΄λ–€ μ’…λ₯˜μ˜ 값도 μ €μž₯ν•  수 μžˆλ‹€.

let a: any = 0
a = 'hello'
a = true
a = {}

 

πŸ“undefined νƒ€μž…

➰ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œ undefinedλŠ” νƒ€μž…μ΄κΈ°λ„ ν•˜κ³  값이기도 ν•˜λ‹€.

let u: undefined = undefined
u = 1 // μ—λŸ¬

νƒ€μž…μŠ€ν¬λ¦½νŠΈ νƒ€μž… 계측도

 

πŸ“ ν…œν”Œλ¦Ώ λ¬Έμžμ—΄

➰ λ³€μˆ˜μ— λ‹΄κΈ΄ 값을 μ‘°ν•©ν•΄ λ¬Έμžμ—΄μ„ λ§Œλ“€ 수 있게 ν•œλ‹€.

let count = 10, message = 'Your count'
let result = `${message} is ${count}`;
// Your count is 10

πŸ“£  객체와 μΈν„°νŽ˜μ΄μŠ€

πŸ“  μΈν„°νŽ˜μ΄μŠ€λŠ” μ™œ λ“±μž₯ν–ˆλ‚˜?

βœ”οΈ object νƒ€μž…μœΌλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” number, boolean, string νƒ€μž…μ˜ 값을 κ°€μ§ˆ μˆ˜λŠ” μ—†μ§€λ§Œ, 속성 이름이 λ‹€λ₯Έ 객체λ₯Ό λͺ¨λ‘ 자유둭게 담을 수 μžˆλ‹€.

let o: object = {name: 'Jack', age: 32}
o = {first: 1, second: 2}

➰ 마치 객체λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” any νƒ€μž…μ²˜λŸΌ λ™μž‘ν•œλ‹€.

➰ 이λ₯Ό 막기 μœ„ν•΄μ„œ μΈν„°νŽ˜μ΄μŠ€κ°€ λ“±μž₯ν–ˆλ‹€.

 

πŸ“ μΈν„°νŽ˜μ΄μŠ€ μ„ μ–Έλ¬Έ

interface IPerson {
    name: string
    age: number
}

➰ 속성듀을 μ—¬λŸ¬ μ€„λ‘œ κ΅¬ν˜„ν•  λ•ŒλŠ” ';' μ΄λ‚˜ λ‹¨μˆœνžˆ μ€„λ°”κΏˆμœΌλ‘œ κ΅¬λΆ„ν•œλ‹€.

➰ nameμ΄λ‚˜ age 속성 쀑 ν•˜λ‚˜λ§Œ 없어도 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

 

πŸ“ 선택 속성(optional property) ꡬ문

interface IPerson {
    name: string
    age: number
    etc?: boolean
}

➰ etc 속성은 μžˆμ–΄λ„ 되고 없어도 λœλ‹€.

 

πŸ“ μ΅λͺ… μΈν„°νŽ˜μ΄μŠ€

function printMe(me: {name: string, age: number, etc?: boolean}) {
    console.log(
      me.etc ?
        `${me.name} ${me.age} ${me.etc}`:
        `${me.name} ${me.age}`
    )
}
printMe(ai)	// Jack 32

➰ μ΅λͺ… μΈν„°νŽ˜μ΄μŠ€λŠ” 주둜 μœ„μ²˜λŸΌ ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•  λ•Œ μ‚¬μš©ν•œλ‹€.


πŸ“£  객체와 클래슀

πŸ“ 클래슀 μ„ μ–Έλ¬Έ

class Person1 {
    name: string
    age?: number
}

let jack1: Person1 = new Person1();
jack1.name = 'Jack';
jack1.age = 32;
console.log(jack1);	// Person1 { name: 'Jack', age: 32 }

➰ nameκ³Ό age 속성을 가진 클래슀

 

πŸ“  μ ‘κ·Ό μ œν•œμž

➰ 클래슀의 속성은 public, private, protect와 같은 μ ‘κ·Ό μ œν•œμžλ₯Ό 이름 μ•žμ— 뢙일 수 μžˆλ‹€.

➰ μƒλž΅ν•˜λ©΄ public으둜 κ°„μ£Όν•œλ‹€.

 

πŸ“  μƒμ„±μž

➰ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ ν΄λž˜μŠ€λŠ” constructorλΌλŠ” μ΄λ¦„μ˜ νŠΉλ³„ν•œ λ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•œλ‹€.

➰ constructorλ₯Ό μ‚¬μš©ν•΄ 클래슀의 속성을 μ„ μ–Έν•  수 μžˆλ‹€.

class Person2 {
    constructor(public name: string, pubilc age?: number) {}
}
let jack2: Person2 = new Person2('Jack', 32);
console.log(jack2)	// Person2 { name: 'Jack', age: 32 }
class Person3 {
    name: string
    age?: number
	constructor(name: string, age?: number){
        this.name = name; 
        this.age = age;
    }
}

➰ λ‘λ²ˆμ§Έ 클래슀λ₯Ό 첫번째 클래슀처럼 ν•¨μΆ•ν•΄μ„œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

 

πŸ“  μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„

interface IPerson4 {
    name: string
    age?: number
}

class Person4 implements IPerson4 {
    name: string
    age: number
}

➰ μΈν„°νŽ˜μ΄μŠ€λŠ” νŠΉμ • 속성이 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” κ·œμ•½μΌ 뿐, 물리적으둜 κ·Έ 속성을 λ§Œλ“€μ§„ μ•ŠλŠ”λ‹€.

➰ λ•Œλ¬Έμ— 클래슀 λͺΈν†΅μ—λŠ” λ°˜λ“œμ‹œ μΈν„°νŽ˜μ΄μŠ€κ°€ μ •μ˜ν•˜κ³  μžˆλŠ” 속성을 멀버 μ†μ„±μœΌλ‘œ ν‘œν˜„ν•΄μ•Ό ν•œλ‹€.

 

πŸ“  좔상 클래슀

➰ μ†μ„±μ΄λ‚˜ λ©”μ„œλ“œ μ•žμ— abstractλ₯Ό λΆ™μ—¬μ„œ λ‚˜λ₯Ό μƒμ†ν•˜λŠ” λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ 이 μ†μ„±μ΄λ‚˜ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜κ²Œ ν•œλ‹€.

abstract class AbstractPerson5 {
    abstract name: string
    constructor(public age?: number) {}
}

➰ name 속성 μ•žμ— abstractκ°€ λΆ™μ—ˆμœΌλ―€λ‘œ new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ 객체λ₯Ό λ§Œλ“€ 수 μ—†λ‹€. 

 

πŸ“  클래슀의 상속

class Person5 extends AbstractPerson5{
    constructor(public name: string, age?: number) {
        super(age)
    }
}
let jack5: Person5 = new Person5('Jack', 32);

➰ Person5 ν΄λž˜μŠ€λŠ” 좔상 클래슀인 AbstractPerson5λ₯Ό μƒμ†ν•΄μ„œ ageλ₯Ό μ–»κ³ , AbstractPerson5λ₯Ό μƒμ†λ°›λŠ” ν΄λž˜μŠ€κ°€ κ΅¬ν˜„ν•΄μ•Ό ν•  name 속성을 κ΅¬ν˜„ν•˜κ³  μžˆλ‹€.

➰ λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό super둜 ν˜ΈμΆœν•  수 μžˆλ‹€.

 

πŸ“  static 속성

class A {
    static initValue = 1
}

let initVal = A.initValue	// 1

➰ μ •μ  속성은 'dot notation'을 μ‚¬μš©ν•΄ 값을 μ–»κ±°λ‚˜ μ„€μ •ν•  수 μžˆλ‹€.

 

'Study > TypeScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[TS] λ°°μ—΄κ³Ό νŠœν”Œ  (2) 2023.02.02
[TS] ν•¨μˆ˜μ™€ λ©”μ„œλ“œ  (0) 2023.02.01
[TS] νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν”„λ‘œμ νŠΈ λ§Œλ“€κΈ°  (0) 2023.01.30
[TS] 2. Usage  (0) 2023.01.27
[TS] 1. Fundamentals  (0) 2023.01.26