Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 155 additions & 0 deletions chapter2/reyou/item01-14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
## μ•„μ΄ν…œ 01. TS 와 JS 관계 μ΄ν•΄ν•˜κΈ°

- JS μŠˆμš°νΌμ…‹μž„
- TS λΌμ„œ λ¬΄μ„œμ›Œν•˜μ§€λ§ 것. JSμ—μ„œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν•  수 있음.
- μ»΄νŒŒμΌκ³Όμ •μ΄ ν•„μš”ν•¨ λ²ˆκ±°λ‘­μ§€λ§Œ 뭐 μ–΄μ©Œκ² μœΌ.
- νƒ€μž…μ„ μΆ”λ‘ ν•œλ‹€λŠ” `정적` 방식은 μž₯점이 있음.
- 그것은 λΉŒλ“œλ‚˜ μ»΄νŒŒμΌμ „μ— 미리 였λ₯˜λ‚˜ λ¬Έμ œμ λ“€μ„ μ•Œ 수 μžˆλ‹€λŠ” 것.
- κ·Έλž˜λ„ 만λŠ₯은 μ•„λ‹˜
- 인생은 μ—„κ²©ν•˜κ²Œ μ‚΄μž

## μ•„μ΄ν…œ 02. TS μ„€μ • μ΄ν•΄ν•˜κΈ°

- TS 컴파일러 μ„€μ • 개 많음....
- 근데 λ‚˜μ€‘μ— 찾음 됌 tsconfig.json
- noImplicitAny : 이거 κΌ­ μ„€μ •. μ• λ‹ˆμžˆλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ 아이닀
- srtictNullCheck : 널과 μ–Έλ””νŒŒμΈλ“œλ₯Ό 막 ν• λ‹Ήν•˜μ§€λ§λΌ `-_-` μš”κ±° μ„€μ •ν•΄μ„œ μ˜λ„μ  λͺ…μ‹œν•  것.
- μ•„λ¬΄νŠΌ 이듀 섀정은 짜기 νž˜λ“€μ§€λ§Œ κ³ κΈ‰μ§„ ν’ˆμ§ˆμ½”λ“œλ₯Ό μœ„ν•΄ λ―Έλ¦¬ν•˜λŠ”κ²Œ μ’‹μŒ.

## μ•„μ΄ν…œ 03. μ½”λ“œμƒμ„±κ³Ό νƒ€μž…μ΄ κ΄€κ³„μ—†μŒ
- TS μ»΄νŒŒμΌλŸ¬λŠ”
1. 컴파일(트랜슀파일 TS->JS)함
2. μ½”λ“œ νƒ€μž… 였λ₯˜ μ²΄ν¬ν•΄μ€Œγ…‹
- ν•˜μ§€λ§Œ λŒ€μΆ©.. μ»΄νŒŒμΌν•˜λ©΄ JS νŠ€μ–΄λ‚˜μ˜€κΈ΄ν•¨
- 런.타.μž„.μ—” 타.μž….체.크. λΆˆκ°€ γ… (흠?)
- μ•„ 뭐 λŒ€μΆ© μ•Œ 것같닀...
- μΈμŠ€ν„΄μŠ€μ˜€λΈŒ μ²΄ν¬λŠ” λŸ°νƒ€μž„μ—...
- 아무μͺΌλ‘ νƒœκ·Έλœ μœ λ‹ˆμ˜¨μ΄λž€ 기법이 μžˆμ–΄μ„œ μš”λŸ°κ±΄ μ’€ νŠΉμ΄ν•˜κ΅¬λ‚˜... ν•˜κ³  λ΄„
- https://twitter.com/RE_U_CAT/status/1517866788394258432
- νƒ€μž…μ„ 클래슀둜 λ§Œλ“€λ©΄, νƒ€μž…(λŸ°νƒ€μž„ μ ‘κ·ΌλΆˆκ°€)와 κ°’(λŸ°νƒ€μž„ μ ‘κ·Όκ°€λŠ₯)을 λ‘˜λ‹€ μ“°κΈ°λ„ν•œλ‹€....
- 클래슀둜 λ§Œλ“€λž˜... μ•„ 클래슀 μ‹«μ€λŽ… -γ……-
- μΈμŠ€ν„΄μŠ€ 였브 μ–΄μ©Œκ΅¬λŠ” 아이탬8μ—μ„œ.
- νƒ€μž…μ—°μ‚°μ€ λŸ°νƒ€μž„μ— 영ν–₯을 μ£Όμ§€ μ•Šμ€λ‹€λŠ” 말은 νƒ€μž…μ²΄μ»€λ₯Ό μš°νšŒν•  수 μžˆκ΅°μ•„....
- https://twitter.com/RE_U_CAT/status/1517868440048238593
- 이거 보면 λ³€ν™˜λœ μ½”λ“œκΉŒμ§€ 보면 됨.
- 그럼 뭐.... λŒ€μΆ© λ‹€ν†΅κ³Όν•΄μ„œ κ³€λž€μ“°
- λŸ°νƒ€μž„ νƒ€μž…μ€ μ„ μ–Έλœ νƒ€μž…κ³Ό λ‹€λ₯Ό 수 있데...?
- μ΄μœ λŠ” 뭘까.
- 흠... λŸ°νƒ€μž„μ€‘μ—(APIκ²°κ³Ό)κ°€ ν™•μ‹€νžˆ λ§žμ„ 수 μ•Šμ„ 수 μžˆκ΅¬λ‚˜. 뢈린으둜 ν•΄μ„œ 뢈린이 μ˜¨λ‹€λŠ” 보μž₯이 μ—†λ‹¨μ†Œλ¦¬κ΅°.
- TS Type ν•¨μˆ˜λ₯Ό μ˜€λ²„λ‘œλ“œ ν•  μ‘€ μ—†μŠ΄λŒœ
- 일반적인 μ˜€λ²„λ‘œλ”© κΈ°λŠ₯은 지원함
- 근데 κ΅¬ν˜„μ²΄λ§Œ 남아 μ•ˆλ  수 있음.
- ν•˜μ—¬νŠΌ μ•„μ΄ν…œ 50μ—μ„œ μ•Œμ•„λ³΄μž.
- https://twitter.com/RE_U_CAT/status/1517879363160920065

- TS TypeλŠ” λŸ°νƒ€μž„ μ„±λŠ₯에 영ν–₯ μ—†μŒ.
- λŒ€μ‹  λΉŒλ“œνƒ€μž„ ^^ (심볼같은걸 λ‹€ λ—€λ‹€.)

## μ•„μ΄ν…œ 04. ꡬ쑰적 타이핑 μ΅μˆ™γ…‹
- λ•νƒ€μ΄ν•‘μ΄λž€~ 객체가 μ–΄λ–€ νƒ€μž…μ— λΆ€ν•©ν•˜λŠ” λ³€μˆ˜μ™€ λ©”μ„œλ“œλ₯Ό κ°€μ§ˆ 경우, 객체λ₯Ό ν•΄λ‹Ή νƒ€μž…μ— μ†ν•˜λŠ” κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€. (였리처럼 κ±·κ³ , ν—€μ—„μΉ˜κ³ , 짹짹이면? => μ˜€λ¦¬λ‹€)
- 일단 νƒ€μž…μ„ μ •ν•˜κ³ , ꡬ쑰적으둜 λ§Œλ“œλŠ”λ°μ— μ΅μˆ™ν•΄ μ Έμ•Όκ² λ„€? 음... JSλŠ” 걍 짜면 λ˜λŠ”λ°...
- 그치만 ꡬ쑰적 타이핑에 λ¬Έμ œλ„ μžˆλ‹€.
- JS의 고질적인 0.1 + 0.2 = 0.30000000000000004 μš”λŸ° λ¬Έμ œλ“€ 것듀! 이런건 체크 λͺ»ν•œλ‹€.
- 포함관계에 (?μ΄λ ‡κ²Œ μ¨λ„λ˜λ‚˜) 3DλŠ” 2D κ°œλ…μ„ ν¬ν•¨ν•˜κ³  μžˆμœΌλ‹ˆκΉŒ, νƒ€μž…μ²΄ν¬μ—μ„œλ„ νšŒν”Όκ°€λŠ₯.... λ¬Έμ œκ°€μžˆλ‹€. 이런걸 μ˜€ν”ˆ(*νƒ€μž… ν™•μž₯에 μ—΄λ €μžˆλ‹€.)λ˜μ–΄μžˆλ‹€κ³  ν•˜λŠ”κ΅¬λ‚˜ `-_-;;;`
- μ–΄.. κ·Έλž˜μ„œ 클래슀 λ°©μ‹μœΌλ‘œ (μŠˆκ°€ 신덱싱) μ§œλ„... μΈμŠ€ν„΄μŠ€κ°€ μ˜ˆμƒκ³Ό λ‹€λ₯Ό 수 μžˆλ‹€.
- ꡬ쑰적으둜 μ§°μ§€λ§Œ, μ‚¬μš©μžκ°€ μƒμ„±μžλ₯Ό μ•ˆνƒ€λŠ” ν˜•νƒœλ‘œ ν•΄μ„œ νƒ€μž…μ„ νšŒν”Όν•˜κ³  선언을 해버리면 μ›ν•˜μ§€μ•Šμ€ κ²°κ΄„λ₯Ό κ°€μ Έμ˜΄.
- [μƒ˜ν”Œμ„ λ§Œλ“€μ—ˆλ‹€-λ§ν¬λŠ” νŠΈμ΄ν„°λ‘œ](https://twitter.com/RE_U_CAT/status/1517894759960150016)
- 그치만 ꡬ쑰적 νƒ€μ΄ν•‘ν•˜λ©΄ μœ λ‹›ν…ŒμŠ€νŒ… μ‰½κ²Œ κ°€λŠ₯
- μ΄μœ λŠ” λ””λΉ„μ—λŒ€ν•œ 좔상화(SQL쿼리가 슀트링이고 리턴이 μ• λ‹ˆλΌλŠ”κ±Έ λͺ…μ‹œ)κ°€ λ˜κΈ°μ—... μ•„λ¬΄νŠΌ 이건 μ•„μ΄ν…œ 51μ—μ„œ λ‹€μ‹œλ³΄μž.

## μ•„μ΄ν…œ 05. Any νƒ€μž… μ“°μ§€λ§ˆ
- μ™œ? μ• λ‹ˆ? γ…‡γ…‡... 근데 λ””λΉ„...λ¦¬ν„΄λ˜λŠ”κ±΄ ^^
- μ•„λ¬΄νŠΌ 점진적이고 μ˜΅μ…”λ„ν•œ νƒ€μž…μ΄μžˆλ‹€.
- 그치만 μ• λ‹ˆλŠ” 쓰지말라...
- νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ μ–Έμ–΄κ°€ λ¬ΌλŸ¬ν„°μ§€κΈ° λ•Œλ¬Έ.
- νƒ€μž… μ™œμ”€?


## μ•„μ΄ν…œ 06. νŽΈμ§‘κΈ°λ‘œ TS 써보기
- TSC, TSSERVER μΉœκ΅¬κ°€ μžˆλ‹€.
- VSCODEμ“°λ©΄ 짱이닀.
- μ•„λ¬΄νŠΌ νŽΈμ§‘κΈ° μ§±μ΄λ‹ˆκΉŒ, κ·Έκ±° TSμ ‘λͺ©ν•΄μ„œ λŒμ•„κ°€λ„λ‘ μ„€μ •ν•΄μ„œ 써라...
- μ“°λ©΄, node 같은걸 Fetch ν•΄ 왔을 λ•Œ, νŽΈμ§‘κΈ°λ‘œ 탐색이 κ°€λŠ₯ν•˜λ‹€. (==> νƒ€μž…μΆ”λ‘ μ΄ λΌμ΄λΈŒλŸ¬λ¦¬λ„ κ°€λŠ₯ν•˜λ‹€λŠ” 의미. ==근데 d.ts파일이 μžˆμ–΄μ•Όν•¨γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹)
- https://joshua1988.github.io/ts/usage/declaration.html

## μ•„μ΄ν…œ 07. νƒ€μž…κ°’λ“€μ΄ 집합이라고?
- μ΄μž‰!? μ§‘ν•©μ΄μ—ˆκ΅¬λ‚˜. λ‚˜λ„ 첨 μ•Œμ•˜λ‹€. μ΄λŸ°κ±°λ‹€..
- μ—„κ²©ν•œ 상속관계가 μ•„λ‹ˆλΌ, κ²ΉμΉ˜μ§€λŠ” μ§‘ν•©μœΌλ‘œ ν‘œν˜„ λœλ‹€. μ„œλΈŒνƒ€μž…μ΄ μ•„λ‹ˆλ©΄μ„œλ„ 겹쳐질 수 있음
- νƒ€μž… μ„ μ–Έ μ•ˆν•΄λ„ νƒ€μž…μ΄ 결정될 수 있음
- ν•©μ§‘ν•©μ΄λ‚˜ ꡐ집합에 λŒ€ν•œ λ‚΄μš©λ„ μžˆμœΌλ‹ˆ 집합이라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€. νƒ€μž…μ€ κ·Έλž˜μ„œ 집합이닀.
- 넀버(never)λŠ” 곡집합 (μ–˜λŠ” 루프문 νƒˆλ•Œλ‚˜ 씀)
- keyof λŠ” λ‚˜μ€‘μ— λ‹€μ‹œ λ³Ό 것

## μ•„μ΄ν…œ 08. νƒ€μž…κ³΅κ°„κ³Ό vs 값곡간 μ”Έλ²Œ ꡬ뢄
- νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό 읽을 λ•Œ, νƒ€μž…μΈμ§€, 값인지 ν”Œλ ˆμ΄κ·ΈλΌμš΄λ“œλ₯Ό ν†΅ν•΄μ„œ κ°œλ…μ„ μ΅ν˜€λΌ γ… γ… γ… γ… 
- νƒ€μž…μ€ 값을 μ•ˆκ°€μ§. κ·Έλž˜μ„œ 찍어도 μ•ˆλ‚˜μ˜€κ³  μ—λŸ¬λ‚¨
- interface {} λ‚˜, type{} μ—λ§Œ μ‘΄μž¬ν•¨
- ν΄λž˜μ“°λ‚˜ μ΄λ„˜ 같은 ν‚€μ›Œλ“œλŠ” 헐..... νƒ€μž…, κ°’ 두가지 둜 μ“Έ 수 μžˆλ‹€. μ½˜μ†”λ‘œ μ°μ–΄λ³΄λ‹ˆ 그릏닀.
- "γ…‡γ……γ…‡" -> λ¦¬ν„°λŸ΄μ΄λ‚˜ νƒ€μž…μΌ 수 있음. ꡬ뢄은? μ•Œμ•„μ„œ 해야지뭐...
- typeof, this λ“±λ“±λ“±... 이것듀은 νƒ€μž…μΌ μˆ˜λ„ 있고 곡간 값일 수 μžˆλ‹€.
- 결둠은 νƒ€μž…κ³Ό 값을 ꡬ뢄 μž˜ν•˜λΌλŠ”κ±°κ³ 
- λ§€κ°œλ³€μˆ˜μ—μ„œλ„ 잘 μΆ”λ‘ λ˜λ‹ˆκΉŒ λ‚˜λˆ  μ“°λΌλŠ”κ±΄λ° μ•„μ΄ν…œ 20μ—μ„œ λ‹€μ‹œλ³Ό λ‚΄μš©.

## μ•„μ΄ν…œ 09. νƒ€μž… 단언ㄴㄴ νƒ€μž…μ„ μ–Έγ…‡γ…‹
- νƒ€μž… μ„ μ–Έκ³Ό νƒ€μž… 단언은 λ‘˜ λ‹€ 이건 이 νƒ€μž…μ΄μ•Ό! ν•œλ‹€μ§€λ§Œ, νƒ€μž… 단언은 γ„΄γ„΄ μ„ μ–Έ γ…‡γ…‹
- 단언은 였λ₯˜λ₯Ό λͺ»μž‘아냄 κ·ΈλŸ¬λ‹ˆκΉŒ (: Type) 쓰라고
- ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ λ°˜ν™˜νƒ€μž…λ„ λͺ…μ‹œν•˜μž
- λ‚΄λΆ€μ—μ„œ μ•„λ‹ˆλ©΄ μ§κ΄€μ μœΌλ‘œ μ„ μ–Έν•˜κ±°λ‚˜
- νƒ€μž…μ— ν™• μ •μ˜ν•  것.
- λ‚΄κ°€ TS보닀 νƒ€μž…μ„ 더 μž˜μ•Œ λ•Œλ§Œ λ‹¨μ–Έν•˜κ±°λ‚˜ null μ“Έ 것
- dom νƒ€μž…μ€ 55 μ•„μ΄ν…œμ—μ„œ
- 접미사 ! λŠ” νƒ€μž…λ‹¨μ–Έ
- unknown은 λͺ¨λ“  νƒ€μž…μ˜ μ„œλΈŒνƒ€μž…. ν•˜μ§€λ§Œ λ­”κ°€ μœ„ν—˜ν•œμ§“μ„ ν•˜κ³  μžˆκ² μ§€?

## μ•„μ΄ν…œ 10. 객체 λž˜νΌνƒ€μž… ν”Όν•˜μž
- λž˜νΌνƒ€μž… μ΄ν•΄ν•˜κΈ°
- μ§μ ‘μ‚¬μš©, μΈμŠ€ν„΄μŠ€ μž‘μ„± ν”Όν•˜κΈ°
- 객체 λž˜νΌνƒ€μž…μ€ 잘 쓰지말고, κΈ°λ³Έν˜• νƒ€μž…μ„ μ“Έ 것.
- String 보닀 string
- Number λ³΄λ‹€λŠ” number κ°™μ€κ±Έλ‘œ!!!!!

- κΈ°λ³Έν˜• 말고 κΈ°λ³Έν˜•μ„ 잘 쓰도둝 말아둔 λž˜νΌνƒ€μž…μ΄λž€ 전섀적인 객체 νƒ€μž… μΉœκ΅¬λ“€μ΄ μžˆλ‹€.
- λͺ½ν‚€νŒ¨μΉ˜λž€? μ›μˆ­μ΄ μž₯λ‚œμ²˜λŸΌ 쀑간에 λ„λŠ” μ½”λ“œμ— μŠ‰μƒ₯ μ½”λ“œλ‘œ μˆ˜μ •μ„ κ°€ν•˜λŠ” 것
- μ΄λŸ°μ‹μœΌλ‘œ μˆ˜μ •μ„ ν•˜λ©΄ μ›λž˜ λ™μž‘ν•˜λŠ”
"문자문자".charAt λ₯Ό
String.prototype.charAt 둜 재 μ„ μ–Έν•΄μ„œ ν•΄λ‹Ή μœ„μΉ˜μ˜ thisλ₯Ό κ°•μ œλ°”μΈλ”©, κ²°κ³Όλ₯Ό λ‹€λ₯΄κ²Œ λ§Œλ“€ 수 μžˆλ‹€.
- TSλŠ” κΈ°λ³Έν˜•κ³Ό κ°μ²΄νƒ€μž…λ ˆνΌλ₯Ό λ”°λ‘œ ꡬ뢄해 λͺ¨λΈλ§

## μ•„μ΄ν…œ 11. μž‰μ—¬μ†μ„±μ²΄ν¬ν•œκ³„μΈμ§€
- 와 ... μž‰μ—¬μ†μ„± 체크 ν•œκ³„κ°€ 뭐야??????
- λ‚¨λŠ” μ†μ„±μ΄λ‚˜ μΆ”κ°€ν•œ 속성 같은걸 λ§ν•œκ±°κ΅¬λ‚˜.
- κ°μ²΄λ¦¬ν„°λŸ΄μ„ λ³€μˆ˜μ— ν• λ‹Ή, ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ 전달할 λ•Œ, μž‰μ—¬μ†μ„± 체크 μˆ˜ν–‰.
- 였λ₯˜μ°ΎλŠ” 효과적인 방법
- TS체컀가 μˆ˜ν–‰ν•˜λŠ” 일반적 ꡬ쑰적 ν• λ‹Ήκ³Ό, κ°€λŠ₯μ„± μ²΄ν¬λŠ” 역할이 닀름.
- μž‰μ—¬μ†μ„± 체크엔 ν•œκ³„κ°€ 있음. μž„μ‹œλ³€μˆ˜λ₯Ό λ„μž…ν•˜λ©΄ κ±΄λ„ˆλ›Έ 순 μžˆλŠ”λ°...
- https://twitter.com/RE_U_CAT/status/1518135139993530368


## μ•„μ΄ν…œ 12. ν•¨μˆ˜ ν‘œν˜„μ‹μ— νƒ€μž… 적용
- μ•„ λ‹Ήμ—°νžˆ 선언식과 ν‘œν˜„μ‹μ€ λ‹€λ₯΄μ§€
- TS에선 ν‘œν˜„μ‹ μ“°λŠ”κ²Œ μ’‹μŒ. λ§€κ°œλ³€μˆ˜λΆ€ν„° λ°˜ν™˜κ°’κΉŒμ§€ 전체λ₯Ό ν•¨μˆ˜νƒ€μž…μœΌλ‘œ μ„ μ–Έν•˜μ—¬ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μž₯점.
- λ§€κ°œλ³€μˆ˜λ‚˜ λ°˜ν™˜κ°’μ— νƒ€μž…μ„ λͺ…μ‹œλ³΄λ‹€, ν•¨μˆ˜ν‘œν˜„μ‹ 전체에 νƒ€μž…κ΅¬μ‘°λ₯Ό λ§€ν•‘ν•˜λŠ”κ²Œ μ’‹λ‹€.
- 이왕이면 ν•˜λ‚˜λ‘œ ν†΅ν•©ν•˜λŠ”κ²ƒλ„ μ’‹μ•„.
- κ°™μ€νƒ€μž… νƒ€μž… μ‹œκ·Έλ‹ˆμ²˜λ₯Ό 반볡적으둜 μž‘μ„±λœλ‹€λ©΄ νƒ€μž…μ„ λΆ„λ¦¬ν•˜κ±°λ‚˜ 이미 μ‘΄μž¬ν•˜λŠ” νƒ€μž…μ΄ μ—†λ‚˜λ³Ό 것. 라이브러리λ₯Ό 직접 λ§Œλ“€λ©΄ 곡톡 μ½œλ°±μ„ λ§Œλ“€λ©΄ μ’‹μŒ.
- λ‹€λ₯Έν•¨μˆ˜λ‚˜ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ°Έκ³ ν•˜λ €λ©΄ typeof fn을 μ“΄λ‹€.

## μ•„μ΄ν…œ 13. νƒ€μž… vs μΈν„°νŽ˜μ΄μŠ€
- νƒ€μž…κ³Ό μΈν„°νŽ˜μ΄μŠ€μ˜ 차이점과 λΉ„μŠ·ν•œμ μ„ 이해해야지
- μΈν„°νŽ˜μ΄μŠ€ - νƒ€μž…ν™•μž₯ κ°€λŠ₯
- νƒ€μž… - μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™•μž₯ κ°€λŠ₯
- μœ λ‹ˆμ˜¨ νƒ€μž…μ€ μžˆμ§€λ§Œ
- μœ λ‹ˆμ˜¨ μΈν„°νŽ˜μ΄μŠ€λŠ” μ—†μŒ.
- ν•œνƒ€μž…μ„ νƒ€μž…κ³Ό μΈν„°νŽ˜μ΄μŠ€λ‘œ μž‘μ„±ν•  쀄 μ•Œμ•„μ•Όμ§€
- ν”„λ‘œμ νŠΈμ—μ„œ μ–΄λ–€κ±Έ ν• μ§€ κ²°μ •ν•˜κ³  μΌκ΄€λ˜κ²Œ μ§œμ•Όμ§€. λ¦¬μ•‘νŠΈμ—μ„œ μ»΄ν¬λ„ŒνŠΈλŠ” νƒ€μž…μœΌλ‘œ μ„ μ–Έν•˜κ³  λ©”μ„œλ“œλŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œ λ§Œλ“ λ‹€λ˜κ°€
- 였.. μ„ μ–Έλ³‘ν•©μ΄λž€κ²Œ μΈν„°νŽ˜μ΄μŠ€μ— μžˆκ΅¬λ‚˜. λ‚˜μ€‘μ— 많이 씀.

## μ•„μ΄ν…œ 14. νƒ€μž… μ—°μ‚°κ³Ό μ œλ„ˆλ¦­ μ‚¬μš©μœΌλ‘œ λ°˜λ³΅μ€„μ΄κΈ°
- μ œλ„ˆλ¦­ 친ꡬλ₯Ό μ¨μ„œ 반볡 쀄이기닀. (DRY)
- νƒ€μž…μ— 이름을 λΆ™μ—¬ 반볡 ν”Όν•˜κΈ°, Extends μ‚¬μš©ν•΄μ„œ μΈν„°νŽ˜μ΄μŠ€ 반볡 ν”Όν•˜κΈ°.
- μ—΄μ‹¬νžˆ 반볡 쀄이기 ...

- νƒ€μž…κ°„ 맀핑을 κ³΅λΆ€ν•˜λ©΄ μ’‹μŒ... keyof, typeof, 인덱싱, λ§€ν•‘λœ νƒ€μž… λ“±...
- λ§€ν•‘λœ νƒ€μž…μ€ (k in keyof Options) 같은건 μˆœνšŒν•˜λ©΄μ„œ Options 내에 k 속성이 μžˆλŠ”μ§€ μ°ΎλŠ”λ‹€. (Partial μ°Έμ‘°)
- `80μͺ½μ’€ λ‚˜μ€‘μ— λ‹€μ‹œ 보자.`
- μ œλ„ˆλ¦­μ€ νƒ€μž…μ„ μœ„ν•œ ν•¨μˆ˜ νƒ€μž…μ„ λ°˜λ³΅ν•˜λŠ” λŒ€μ‹ , μ œλ„ˆλ¦­μœΌλ‘œ νƒ€μž…κ°„μ— λ§€ν•‘κ°€λŠ₯
- ν‘œμ€€λΌμ΄λΈŒλŸ¬λ¦¬μ— μ •μ˜λœ Pick, Partial, ReturnType 같은 μ œλ„ˆλ¦­νƒ€μž…μ— μ΅μˆ™ν•˜μ Έμ•Ό.....
37 changes: 37 additions & 0 deletions chapter2/reyou/item15-18.md
Original file line number Diff line number Diff line change
@@ -1 +1,38 @@
## μ•„μ΄ν…œ 15. 동적 데이터에 인덱슀 μ‹œκ·Έλ‹ˆμ²˜ μ‚¬μš©ν•˜κΈ°

- λŸ°νƒ€μž„ λ•Œ κΉŒμ§€ 객체속성을 μ•Œ 수 μ—†λŠ” κ²½μš°μ—λ§Œ 인덱슀 μ‹œκ·Έλ‹ˆμ²˜ μ“°κΈ°.
- 인덱슀 μ‹œκ·Έλ‹ˆμ³κ°€ 뭐야
https://developer-talk.tistory.com/297
- 인덱슀 ν˜•νƒœλ‘œ 쿠쿠루μ‚₯λ½•ν•˜κ²Œ λ§Œλ“€μ–΄ μ£ΌλŠ” 것
- 인덱슀 μ‹œκ·Έλ‹ˆμ²˜νƒ€μž…μ—” undefined λ₯Ό μ¨μ„œ μ•ˆμ „ν•¨μ„ κ³ λ € ν•  것.
- κ°€λŠ₯ν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€, Record, λ§€ν•‘λœ νƒ€μž… κ°™μ€κ±Έλ‘œ 인덱슀 μ‹œκ·Έλ‹ˆμ³ 쓰지말고 λͺ…ν™•ν•˜κ²Œ γ… γ… 
- μžλ™μ™„μ„±λ„ μ•ˆλ˜λ‹ˆ 고심할 것.
- 데이터λ₯Ό λ™μ μœΌλ‘œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©.


## μ•„μ΄ν…œ 16. Number 인덱슀 μ‹œκ·Έλ‹ˆμ²˜λ³΄λ‹€ Array, νŠœν”Œ, ArrayLikeλ₯Ό μ‚¬μš©ν•˜κΈ°

- 배열은 κ°μ²΄μ΄λ―€λ‘œ ν‚€λŠ” μˆ«μžκ°€ μ•„λ‹ˆλΌ λ¬Έμžμ—΄, 인덱슀 μ‹œκ·Έλ‹ˆμ³λ‘œ μ‚¬μš© 된 number νƒ€μž…μ€ λ²„κ·Έμž‘μ„ 순수 νƒ€μž… 슀크립트
- (제λͺ©κ³Ό 동일)
-

## μ•„μ΄ν…œ 17. λ³€κ²½ κ΄€λ ¨λœ 였λ₯˜ 인지λ₯Ό μœ„ν•΄ readonly μ“°κΈ°
- 아이고 λ‹Ήμ—°νžˆ ν•œλ²ˆ λ”± λ°•μœΌλ €κ³  ν–ˆλŠ”λ°, λ°”λ€Œλ©΄ μ•ˆλ˜μ£  readonly둜 μ„ μ–Έν•˜μž.
- JSλŠ” λ°°μ—΄ 변경이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ—, TSμ—μ„œλ„ 였λ₯˜μ—†μ΄ λ„˜μ–΄κ°€κΈ°λ„ ν•˜λŠ”λ°, 이 λ•Œ 였λ₯˜λ₯Ό 쒁힐 readonlyκ°€ ν•„μš”ν•˜λ‹€.
- λ”± 보면 μ½κΈ°μ „μš©. ν•œλ²ˆ λ§Œλ“€λ©΄ λ³€κ²½λΆˆκ°€
- readonly의 경우 ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜μ—λ„ 넣을 수 μžˆλ‹€.
- ```function arrSum(arr: readonly number[]){}``` μ΄λŸ°μ‹μœΌλ‘œ.
-

- λ³€κ²½ν•˜λ©΄μ„œ λ°œμƒν•˜λŠ” 였λ₯˜λ„ 작고, 변경이 λ°œμƒν•˜λŠ” μ½”λ“œλ„ μ‰½κ²Œ 찾을 수 μžˆλ‹€.
- const 와 readonlyλŠ” λ‹€λ₯Έ 것.
- μ–•κ²Œ λ™μž‘ν•œλ‹€. 잘 μ•Œμ•„λ‘˜ 것.

## μ•„μ΄ν…œ 18. λ§€ν•‘λœ νƒ€μž… μ‚¬μš©. 값동기화
- λ§€ν•‘λœ νƒ€μž…μ„ μ‚¬μš©ν•΄μ„œ κ΄€λ ¨λœ κ°’κ³Ό νƒ€μž… 맞좜 것.
- 데이터가 λ³€ν•˜λ©΄, λ¦¬λ Œλ”λ§ ν•  수 μžˆμ§€.
- ν•Έλ“€λŸ¬κ°€ λ³€ν•˜λ©΄, λ¦¬λ Œλ”λ§ ν•„ μš” μ—†μ§€.
- 104page λΆ€ν„° 보면 λœλ‹€.
- https://t.co/USm0A7KcXy
- μΈν„°νŽ˜μ΄μŠ€μ— 속성을 μΆ”κ°€ν•  λ•Œ, 선택을 κ°•μ œν•˜λ„λ‘ λ§€ν•‘λœ νƒ€μž…μ„ κ³ λ €ν•  것....
- μ‹€νŒ¨μ— λŒ€ν•œ 방법을 κ³ λ―Όν•΄μ„œ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν•˜λŠ”κ²ƒλ„ μ€‘μš”ν•˜λ‹€... μ–΄λ–€ μ‹μœΌλ‘œ νŒλ‹¨μ„ ν• μ§€.