πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 51 - μ˜μ‘΄μ„± 뢄리λ₯Ό μœ„ν•΄ 미러 νƒ€μž… μ‚¬μš©ν•˜κΈ°

이μž₯μ—μ„œμ˜ 핡심은 라이브러리λ₯Ό μž‘μ„±μ€‘μΌ λ•Œ, 의쑴이 ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ κ΅¬ν˜„κ³Ό 상관없이 νƒ€μž…λ§Œ ν•„μš”ν•˜λ‹€λ©΄ λͺ¨λ“  라이브러리λ₯Ό λΆˆλŸ¬μ˜€μ§€ μ•Šκ³  ꡬ쑰적 타이핑을 ν™œμš©ν•˜μ—¬ ν•„μš”ν•œ λ©”μ„œλ“œμ™€ μ†μ„±λ§Œ λ³„λ„λ‘œ μž‘μ„±ν•˜μžλΌκ³  λŠκ»΄μ‘Œλ‹€. Buffer μ˜ˆμ‹œ Buffer νƒ€μž…μ„ μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ³΄μž. BufferλŠ” λ…Έλ“œ 개발자λ₯Ό μœ„ν•œ 것이닀. Buffer νƒ€μž…μ„ 뢈러였기 μœ„ν•΄ @types/node(NodeJS νƒ€μž… μ„ μ–Έ) λͺ¨λ“ˆμ„ μ„€μΉ˜ν•΄μ•Ό ν•œλ‹€. 이λ₯Ό μ„€μΉ˜ν•˜κ²Œ λœλ‹€λ©΄ λ‹€μŒκ³Ό 같은 κ°œλ°œμžμ—κ²Œ λ¬Έμ œκ°€ 생긴닀. 1. μžλ°”μŠ€ν¬λ¦½νŠΈ 개발자: NodeJS, @types와 λ¬΄κ΄€ν•˜λ‹€. 2. νƒ€μž…μŠ€ν¬λ¦½νŠΈ 개발자: NodeJS와 λ¬΄κ΄€ν•˜λ‹€. 즉, κ°μžκ°€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λͺ¨λ“ˆμ΄ ν¬ν•¨λ˜μ–΄ 있기 λ•Œλ¬Έμ— ν˜Όλž€μŠ€λŸ¬μšΈ 것이닀. BufferλŠ” NodeJS κ°œλ°œμžμ—κ²Œλ§Œ ..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 50 - μ˜€λ²„λ‘œλ”© νƒ€μž…λ³΄λ‹€λŠ” 쑰건뢀 νƒ€μž…μ„ μ‚¬μš©ν•˜κΈ°

μ˜€λ²„λ‘œλ”© νƒ€μž…μ΄λž€? μ˜€λ²„λ‘œλ”© νƒ€μž…μ€ μ•„μ΄ν…œ 3μ—μ„œ λ‹€λ£¨μ—ˆλ˜ κ°œλ…μ΄λ‹€. λ‹€μ‹œ μ •λ¦¬ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€. μš°μ„  ν•¨μˆ˜ μ˜€λ²„λ‘œλ”©μ΄λž€ λ™μΌν•œ 이름에 λ§€κ°œλ³€μˆ˜λ§Œ λ‹€λ₯Έ μ—¬λŸ¬ λ²„μ „μ˜ ν•¨μˆ˜λ₯Ό ν—ˆμš©ν•˜λŠ” 것이닀. ν•˜μ§€λ§Œ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λΆˆκ°€λŠ₯ν•˜λ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ— λΉ„μŠ·ν•œ κΈ°λŠ₯을 μ§€μ›ν•˜μ§€λ§Œ μ΄λŠ” νƒ€μž… μˆ˜μ€€μ—μ„œλ§Œ λ™μž‘ν•˜λ―€λ‘œ μ˜€λ²„λ‘œλ”© νƒ€μž…μ΄λΌκ³  ν•œλ‹€. 즉, ν•˜λ‚˜μ˜ ν•¨μˆ˜μ— λŒ€ν•΄ μ—¬λŸ¬ 개의 선언문을 μž‘μ„±ν•  수 μžˆμ§€λ§Œ, κ΅¬ν˜„μ²΄λŠ” 였직 ν•˜λ‚˜λΏμ΄λ‹€. function add(a: number, b: number): number; // add ν•¨μˆ˜μ— λŒ€ν•œ μ„ μ–Έλ¬Έ 1 function add(a: string, b: string): string; // add ν•¨μˆ˜μ— λŒ€ν•œ μ„ μ–Έλ¬Έ 2 // add ν•¨μˆ˜ κ΅¬ν˜„μ²΄ function add(a, b) { r..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 37 - 곡식 λͺ…μΉ­μ—λŠ” μƒν‘œ 뢙이기

1. ꡬ쑰적 νƒ€μ΄ν•‘μ˜ κ΄€μ μ—μ„œ μ‚΄νŽ΄λ³΄κΈ° λ‹€μŒκ³Ό 같은 μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. type Vector2D = { x: number; y: number; }; type Vector3D = { x: number; y: number; z: number; }; const calculateNorm = (p: Vector2D) => { return Math.sqrt(p.x * p.x + p.y * p.y); }; Vector2D와 Vector3D νƒ€μž…μ΄ μžˆμŠ΅λ‹ˆλ‹€. calculateNorm ν•¨μˆ˜λ„ μžˆλŠ”λ°μš”. 이 ν•¨μˆ˜λŠ” Vector2D νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— Vector3D νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό ν—ˆμš©ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ ꡬ쑰적 타이핑 κ΄€μ μ—μ„œ λ³Έλ‹€λ©΄ λ‹€μŒμ˜ μ½”λ“œλŠ” λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„  μ–΄λ–»κ²Œ ν•΄..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 28 - μœ νš¨ν•œ μƒνƒœλ§Œ ν‘œν˜„ν•˜λŠ” νƒ€μž…μ„ 지ν–₯ν•˜κΈ°

1. μœ νš¨ν•œ μƒνƒœ 효과적으둜 νƒ€μž…μ„ μ„€κ³„ν•˜κΈ° μœ„ν•΄μ„œ, μœ νš¨ν•œ μƒνƒœλ§Œ ν‘œν˜„ν•  수 μžˆλŠ” νƒ€μž…μ„ λ§Œλ“€μ–΄ λ‚΄λŠ” 것이 κ°€μž₯ μ€‘μš”ν•˜λ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” μœ νš¨ν•œ μƒνƒœλž€ λ¬΄μ—‡μΌκΉŒ? 유효의 사전적 의미λ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. 효λ ₯μ΄λ‚˜ νš¨κ³Όκ°€ 있음. 즉, 효λ ₯μ΄λ‚˜ νš¨κ³Όκ°€ μžˆλŠ” μƒνƒœκ°€ μœ νš¨ν•œ μƒνƒœλΌκ³  ν•  수 μžˆλ‹€. ν”„λ‘œκ·Έλž˜λ° κ΄€μ μ—μ„œ μ‚΄νŽ΄λ³΄λ©΄ μ–΄λ”˜κ°€μ— μ‚¬μš©λ  수 μžˆλŠ” μƒνƒœμ΄λ‹€. λ‹€μŒκ³Ό 같은 μƒνƒœκ°€ μžˆλ‹€. interface State { a: string; b: string; c?: string; d?: string; } 이와 같은 μƒνƒœλŠ” λ‹€μŒκ³Ό 같이 μ—¬λŸ¬ 가지 μƒνƒœλ₯Ό ν¬ν•¨ν•œλ‹€. interface StateOne { a: string; b: string; } interface StateTwo { a: string; b: st..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 27 - ν•¨μˆ˜ν˜• 기법과 라이브러리둜 νƒ€μž… 흐름 μœ μ§€ν•˜κΈ°

1. νƒ€μž… 흐름 μœ μ§€ν•˜κΈ° νƒ€μž… 정보가 κ·ΈλŒ€λ‘œ μœ μ§€λ˜λ©΄μ„œ νƒ€μž… 흐름이 계속 μ „λ‹¬λ˜λŠ” 것은 개발자둜 ν•˜μ—¬κΈˆ νƒ€μž… 체크에 λŒ€ν•œ 신경을 쀄일 수 있게 도와쀀닀. 직접 루프λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것보닀 λ‚΄μž₯된 ν•¨μˆ˜ν˜• 기법과 λ‘œλŒ€μ‹œ 같은 μœ ν‹Έλ¦¬ν‹° 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 νƒ€μž… 정보λ₯Ό κ·ΈλŒ€λ‘œ μœ μ§€ν•˜λŠ”λ° μ ν•©ν•˜λ‹€. νƒ€μž… 정보가 κ·ΈλŒ€λ‘œ μœ μ§€λ˜λŠ” 것엔 λ‹€μŒκ³Ό 같은 μž₯점을 가지고 μžˆλ‹€. νƒ€μž… 흐름을 κ°œμ„ ν•œλ‹€. 가독성을 높인닀. λͺ…μ‹œμ μΈ νƒ€μž… ꡬ문의 ν•„μš”μ„±μ„ 쀄인닀. λͺ‡ 가지 μ˜ˆμ‹œλ₯Ό 톡해 μ ˆμ°¨ν˜• ν”„λ‘œκ·Έλž˜λ°, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 그리고 λ‘œλŒ€μ‹œλ₯Ό 톡해 κ΅¬ν˜„ν•˜μ—¬ μ–΄λ–€ νŠΉμ§•μ΄ μžˆλŠ”μ§€ μ‚΄νŽ΄λ³΄μž. 2. CSV 데이터 νŒŒμ‹±ν•˜κΈ° λ‹€μŒκ³Ό 같은 CSV 데이터가 μžˆλ‹€. 이λ₯Ό νŒŒμ‹±ν•΄λ³΄μž. const csvData = `연도,μ œμ‘°μ‚¬,λͺ¨λΈ,μ„€λͺ…,가격 1997,..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

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

1. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ λ°°μ—΄ 1-1. 배열은 Object이닀. const array = [1, 2, 3]; typeof array; // Object μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ°°μ—΄μ˜ νƒ€μž…μ€ Object이닀. 1-2. Object은 number νƒ€μž…μœΌλ‘œ 접근이 λΆˆκ°€λŠ₯ν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ κ°μ²΄λŠ” ν‚€-κ°’ ν˜•νƒœλ₯Ό 가지고 있으며 ν‚€λŠ” 보톡 string(λ˜λŠ” μ‹¬λ²Œ) νƒ€μž…λ§Œ κ°€λŠ₯ν•˜λ‹€. λ•Œλ¬Έμ— μ•„λž˜μ˜ μ˜ˆμ‹œμ²˜λŸΌ 기쑴에 μš°λ¦¬κ°€ 자주 λ°°μ—΄μ˜ 값에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν–ˆλ˜ 방법은 λΆˆκ°€λŠ₯ν•˜λ‹€. const array = [1, 2, 3]; array[0]; array[1]; array[2]; ν•˜μ§€λ§Œ number νƒ€μž…μ˜ ν‚€λ‘œλ„ μ ‘κ·Όν•˜λŠ” 것에 μžˆμ–΄ 였λ₯˜κ°€ λ‚˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ—μ„œ μžλ™μœΌλ‘œ string νƒ€μž…μœΌλ‘œ ν˜•λ³€ν™˜μ΄ 되기 ..

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 15 - 동적 데이터에 인덱슀 μ‹œκ·Έλ‹ˆμ²˜ μ‚¬μš©ν•˜κΈ°

1. 인덱슀 μ‹œκ·Έλ‹ˆμ²˜λž€? κ³΅μ‹λ¬Έμ„œμ—λŠ” μ•„λž˜μ™€ 같이 인덱슀 μ‹œκ·Έλ‹ˆμ²˜μ˜ μ‚¬μš© μ‹œμ μ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³  μžˆλ‹€. Sometimes you don’t know all the names of a type’s properties ahead of time, but you do know the shape of the values. In those cases you can use an index signature to describe the types of possible values. νƒ€μž…μ˜ 속성을 λͺ¨λ₯΄μ§€λ§Œ κ°’μ˜ ν˜•νƒœλ₯Ό μ•Œκ³  μžˆμ„ λ•Œ, 인덱슀 μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒ€μž…μ„ μ„€λͺ…ν•  수 μžˆλ‹€. 2. 인덱슀 μ‹œκ·Έλ‹ˆμ²˜μ˜ κΈ°λ³Έ 문법 type Props = { [property: string]: string }; Props νƒ€μž…μ΄ μžˆλ‹€...

πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ/Effective Typescript

μ•„μ΄ν…œ 7 - νƒ€μž…μ€ κ°’λ“€μ˜ 집합이닀.

1. νƒ€μž…μ€ ν• λ‹Ή κ°€λŠ₯ν•œ κ°’λ“€μ˜ 집합 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λ³€μˆ˜μ— λ‹€μ–‘ν•œ 값을 ν• λ‹Ήν•  수 μžˆλ‹€. μ΄λŸ¬ν•œ 값듀을 νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ λŸ°νƒ€μž„ 이전에 여기에 ν• λ‹Ήν•  수 μžˆλŠ”κ°€?λΌλŠ” μ˜λ¬Έμ„ ν’ˆκ³  였λ₯˜λ₯Ό μ²΄ν¬ν•˜κΈ° μ‹œμž‘ν•œλ‹€. 였λ₯˜λ₯Ό 톡해 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ μ§‘ν•©μ΄λΌλŠ” κ°œλ…μ— λ‹€κ°€κ°€λ³΄μž. 1-1. νƒ€μž… 였λ₯˜1 νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ λ§Œμ•½ 였λ₯˜λ₯Ό λ°œκ²¬ν•˜λ©΄ μ•„λž˜μ™€ 같은 였λ₯˜λ₯Ό λ°œκ²¬ν•  수 μžˆλ‹€. Type 'number' is not assignable to type 'string'. 숫자 νƒ€μž…μ€ λ¬Έμžμ—΄μ— νƒ€μž…μ— 할당을 ν•  수 μ—†λ‹€λŠ” 것이닀. 이 λ¬Έκ΅¬λŠ” μ§‘ν•©μ˜ κ΄€μ μ—μ„œ μ•„λž˜μ²˜λŸΌ 해석할 수 μžˆλ‹€. 숫자 νƒ€μž…μ€ λ¬Έμžμ—΄ νƒ€μž…μ˜ λΆ€λΆ„ 집합이 μ•„λ‹ˆλ‹€.(두 νƒ€μž…μ˜ 관계) 1-2. νƒ€μž… 였λ₯˜2 또 λ‹€λ₯Έ 였λ₯˜λ₯Ό 보며 μ§‘ν•©μ΄λΌλŠ” κ°œλ…μ„ 적립해 보자. AB의 ..

noah-dev
'πŸ”₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘