⌨

TypeScript

Best Practice

strict λͺ¨λ“œλ₯Ό true 둜 해라

default 둜 TypeScript λŠ” strice mode λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. 아직 ν”„λ‘œμ νŠΈκ°€ μ™„μ „νžˆ TypeScript ν™” λ˜μ§€ μ•Šμ•˜μ„ λ•ŒλŠ” strict mode false κ°€ μœ μš©ν•  수 μžˆλ‹€. (ex - JacaScript 파일의 μΌλΆ€λ§Œ TypeScript 둜 λ³€κ²½). ν•˜μ§€λ§Œ 이것은 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ§Žμ€ 버그듀이 TypeScript μ—μ„œ 걸리진 μ•ŠλŠ”λ‹€.
stirict mode λ₯Ό true 둜 ν•˜μ§€ μ•ŠμœΌλ©΄ TypeScript λŠ” λͺ¨λ“  맀개 λ³€μˆ˜ 및 λ³€μˆ˜μ— λŒ€ν•΄μ„œ null, undefined λ₯Ό 지정할 수 μžˆλ„λ‘ ν•  수 있게 ν•œλ‹€.(any) μ½”λ“œμ˜ 가독성 및 개발의 생산성 ν–₯상 μΈ‘λ©΄μ—μ„œ TypeScript 의 μž₯점을 μ œλŒ€λ‘œ λˆ„λ¦¬κΈ° μœ„ν•΄μ„œ strict λ₯Ό true 둜 ν•˜λŠ” 것이 μ’‹λ‹€.

tsc λŒ€μ‹ μ— babel 을 μ‚¬μš©ν•œλ‹€

바벨 7 버젼 μ΄ν›„λ‘œ TypeScript κ°€ μ§€μ›λœλ‹€. tsc λ₯Ό ν†΅ν•΄μ„œκ°€ μ•„λ‹ˆλΌλ„ JavaScript 파일둜 λ³€ν™˜μ‹œν‚¬ 수 μžˆλ‹€.
babel 은 tsc 보닀 λΉ λ₯Ό 뿐만 μ•„λ‹ˆλΌ, 바벨 μƒνƒœκ³„μ˜ λ‹€λ₯Έ μ‹œμŠ€ν…œλ“€λ„ μ‚¬μš©ν•  수 μžˆλ‹€.

ESLint λ₯Ό μ‚¬μš©ν•΄λΌ. tslint λŠ” deprecated λ˜μ—ˆλ‹€

Do's and Don'ts

primitive νƒ€μž…μ„ μ‚¬μš©ν•΄λΌ

Number, String, Boolean 등은 primitive ν•œ νƒ€μž…μ„ ν‘œν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€. Object λ˜ν•œ TypeScript μ—μ„œ object κ°€ μΆ”κ°€λ˜μ—ˆμœΌλ‹ˆ object λ₯Ό μ‚¬μš©ν•˜μž
/* WRONG */ function reverse(s: String): String; /* OK */ function reverse(s: string): string;
JavaScript

return type 으둜 anyλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€

/* WRONG */ function fn(x: () => any) { x(); } /* OK */ function fn(x: () => void) { x(); } function fn(x: () => void) { var k = x(); // oops! meant to do something else k.doSomething(); // error, but would be OK if the return type had been 'any' }
JavaScript
void λ₯Ό μ‚¬μš©ν•˜λŠ”κ²Œ μ˜ˆμƒμΉ˜ λͺ»ν•œ 값을 return ν•˜λŠ” 것보닀 μ•ˆμ „ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μ°Έμ‘°