전체 글 (157) 썸네일형 리스트형 Effective Typescript - 48 - API 주석에 TSDoc 사용하기 * https://typedoc.org/ Home typedoc.org * https://tsdoc.org/ TSDoc A doc comment standard for TypeScript tsdoc.org * 익스포트 된 함수, 클래스, 타입에 주석을 달 때는 JSDoc/TSDoc 형태를 사용합시다. 이와 같은 형태로 주석을 작성하면 코드 편집기가 주석 정보를 잘 보여줍니다. * @param, @returns 구문과 문서 서식을 위해 마크다운을 사용할 수 있습니다. * 주석에 타입 정보를 포함하면 안 됩니다. (아이템 30의 원칙) Effective Typescript - 47 - 공개 API에 등장하는 모든 타입을 익스포트하기 * 공개 메소드에 등장하는 어떤 형태의 타입이든 export 해주는게 좋습니다. 어차피 라이브러리 사용자가 적절한 타입 유틸리티 연산을 하여 추출할수 있으므로 숨길 필요가 굳이 업습니다. Effective Typescript - 46 - 타입 선언과 관련된 세 가지 버전 이해하기 의존성 관리는 개발자에게 매운 힘든 일입니다. 그래서 개발자들은 단순히 외부 라이브러리를 프로젝트에 추가해서 사용할 뿐, 라이브러리의 전이적 의존성이 호환되는지 깊게 생각하지 않았을 겁니다. 그런데, 실제로 타입스크립트는 알아서 의존성 문제를 해결해주지 않고, 오히려 더 복잡하게 만든다고 합니다. 왜냐하면 타입스크립트를 사용하면 다음 세 가지 사항을 추가로 고려해야 하기 때문입니다. * 라이브러리 버전 * 타입선언(@types)의 버전 * 타입스크립트의 버전 세 가지 버전 중 하나라도 맞지 않으면, 의존성과 상관없이 보이는 곳에서 엉뚱한 오류를 맞이하게 됩니다. 이렇게 발생한 오류의 원인을 파악하고 고치기 위해서는 타입스크립트 라이브러리 관리의 복잡한 메커니즘을 모두 이해해야 합니다. 타입스크립트에서 일.. Effective Typescript - 45 - devDependencies에 typescript와 @types 추가하기 * 타입 스크립트를 시스템 레벨로 설치하면 안됩니다. npm의 devDependencies에 포함시키는 것이 좋습니다. * @types 의존성은 dependencies에 설치하기 보다는 devDependencies에 포함시키는 것이 좋습니다. npm 모듈의 의존성 관련 속성을 모른다면 npm 관련 문서를 검색해 보십시오.. Effective Typescript - 44 - 타입 커버리지를 추적하여 타입 안정성 유지하기 암시적 any 대신 명시적 타입 구문을 추가해도 any 타입과 관련한 문제로부터 안전하다고 할 수 없습니다. any 타입이 여전히 프로그램 내에 존재할 수 있는 상황이 있을 수 있습니다. npm의 type-coverage 패키지를 활용하여 any를 추적할 수 있는 몇가지 방법이 있습니다. npm type-coverage > output : 9985 / 10117 98.69% 예제 결과를 보면 10177개의 심볼 중 9985개가 any가 아니거나 any의 별칭이 아닌 타입을 가지고 있다는 것을 확인할 수 있습니다. 실수로 any 타입이 추가된다면, 이 퍼센티지가 줄어들게 됩니다. 그러므로 개발/유지보수 과정에서 이 결과 퍼센티지가 어떻게 변화되고 있는지 꾸준히 추적할 필요가 있을것 같습니다. npm typ.. Effective Typescript - 43 - 몽키 패치보다는 안전한 타입을 사용하기 저자는 자바스크립트의 가장 유명한 특징을 객체나 클래스에 임의의 속성을 임의로 추가할 수 있을 만큼 유연하다는 것을 꼽습니다. 자바스크립트 FE 개발 시, window나 document 객체에 임의의 속성을 만들어 값을 할당하여 전역 변수처럼 사용하곤 합니다. 이런 행위를 몽키 패치라고 표현합니다. window.monkey = 'test'; document.monkey = 'monky patch'; const el = document.getElementById('monky-div'); el.monkey = 'cached!'; 사실 객체에 위와 같이 몽키패치 하듯 임의의 속성을 추가하는 것은 일반적으로 좋은 설계가 아니라고 합니다. 타입스크립트 관점에서 몽키 패치를 사용한다면, 예를 들어 document .. Effective Typescript - 42 - 모르는 타입의 값에는 any 대신 unknown을 사용하기 unknown에는 함수의 반환 값과 관련된 형태, 변수 선언과 관련된 형태, 단언문과 관련된 형태가 있습니다. 먼저, 함수의 반환값과 관련된 unknown을 알아보겠습니다. YAML 파서인 parseYAML 함수를 작성한다고 가정하고 아래의 예제를 살펴봅시다. // 아이템 38에서 설명한 함수의 반환시 any 지양하기 철학에 위반. function parseYAML(yaml: string): any { // ... } const book = parseYAML(` name: asdfsafd author: abbbb `); alert(book.title); // 타입 체킹에서는 이상 없음. 런타임에 undefined 관련 오류가 발생할 수 있음. book(); // 오류가 없음. 런타임에 함수가 아니라는 오.. Effective Typescript - 41 - any의 진화를 이해하기 타입스크립트의 타입은 변수를 선언할 때 결정된다. 하지만 any 타입과 관련해서 예외인 상황이 있습니다. 아래 예제가 바로 그러한 상황입니다. function range(start: number, limit: number) { const out = []; // any[] for (let i = start; i 이전 1 2 3 4 5 6 7 ··· 20 다음