[S15] Narrowing

https://github.com/OneMoreBottlee/TypeScript-Master/tree/main/S15

TS의 핡심

λͺ…ν™•ν•˜μ§€ μ•Šμ€ νƒ€μž…μ΄ μžˆμ„ λ•Œ (μœ λ‹ˆμ˜¨ νƒ€μž…) νƒ€μž…μ„ μ’νžˆλŠ” κ³Όμ •

typeof Guards

typeofλ₯Ό ν™œμš©ν•΄ νŠΉμ • νƒ€μž…μ— λŒ€ν•œ λ™μž‘μ„ μ„€μ •ν•œλ‹€

Truthiness Guards

νƒ€μž… 유무λ₯Ό 톡해 μ„€μ •ν•œλ‹€.

λ§€κ°œλ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λ©΄ λ¬Έμžμ—΄, μ—†μœΌλ©΄ null μ΄λΌλŠ” 쑰건을 ν™œμš©ν•΄ νƒ€μž…λ³„ λ™μž‘μ„ μ„€μ •ν•œλ‹€.

Equality Narrowing

동등 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ νƒ€μž…μ„ μ’νžŒλ‹€.

x의 νƒ€μž…κ³Ό y의 νƒ€μž…μ—μ„œ λ™μΌν•œ 뢀뢄은 string μ΄λΌλŠ” 점을 μ΄μš©ν•œλ‹€.

in Narrowing

객체의 μ„±μ§ˆμ„ μ‚¬μš©ν•΄ νƒ€μž…μ„ μ’νžŒλ‹€.

2개의 μΈν„°νŽ˜μ΄μŠ€μ—μ„œ νŠΉμ •ν•  수 μžˆλŠ” 속성을 확인해 νƒ€μž…μ„ μ’νžŒλ‹€.

νƒ€μž…μ— λ§žλŠ” λ™μž‘μ„ μ„€μ •ν•œλ‹€.

instanceof Narrowing

instanceof μ—°μ‚°μžμ˜ νŠΉμ§•μ„ μ‚¬μš©ν•΄ νƒ€μž…μ„ μ’νžŒλ‹€.

date 의 ν”„λ‘œν† νƒ€μž… 체인 μ•ˆμ— Date κ°€ 있으면 Date νƒ€μž…

μ•„λ‹ˆλ©΄ string

entity 의 ν”„λ‘œν† νƒ€μž… 체인 μ•ˆμ— User κ°€ 있으면 User νƒ€μž…

μ•„λ‹ˆλ©΄ Company

νƒ€μž… λͺ…μ œ

νƒ€μž… μŠ€ν¬λ¦½νŠΈμ—λ§Œ μžˆλŠ” κΈ°λŠ₯ is OO

Cat μΈν„°νŽ˜μ΄μŠ€ / Dog μΈν„°νŽ˜μ΄μŠ€

νƒ€μž… λͺ…μ œ - animal 이 μΊ£μΌλ•Œ 참이 λ¦¬ν„΄λ˜λŠ” ν•¨μˆ˜

ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄ 참이면 Cat νƒ€μž… μ•„λ‹ˆλ©΄ Dog νƒ€μž…

νŒλ³„ μœ λ‹ˆμ˜¨

곡톡 ν”„λ‘œνΌν‹°λ₯Ό κ³΅μœ ν•˜λŠ” μ—¬λŸ¬ μœ ν˜•μ„ μ„€μ •ν•˜κ³  ν•΄λ‹Ή ν”„λ‘œνΌν‹°κ°€ λ¦¬ν„°λŸ΄ 값이 λ˜λŠ” 것

μˆ˜νƒ‰ μΈν„°νŽ˜μ΄μŠ€, kind = β€œμˆ˜νƒ‰β€

μ†Œ μΈν„°νŽ˜μ΄μŠ€, kind = β€œμ†Œβ€

돼지 μΈν„°νŽ˜μ΄μŠ€, kind = β€œλΌμ§€β€

νƒ€μž… - μΈν„°νŽ˜μ΄μŠ€μ˜ μ§‘ν•©

kind κ°’μœΌλ‘œ νƒ€μž…μ„ 확인해 λΆ„κΈ°

Exhaustiveness check & Never

이둠적으둜 도달할 수 μ—†λŠ” 곳에 Neverλ₯Ό μ„€μ •ν•΄ μ˜λ„ν•˜μ§€ μ•Šμ€ 둜직 λ°œμƒμ‹œ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

μ–‘ μΈν„°νŽ˜μ΄μŠ€

μ–‘ νƒ€μž…μ„ μ²˜λ¦¬ν•˜μ§€ μ•Šμ•„ default κΉŒμ§€ λ‚΄λ €μ˜΄

never둜 λ˜μ–΄μžˆμ–΄ μ—λŸ¬ λ°œμƒ

Last updated

Was this helpful?