IT (58) 썸네일형 리스트형 Effective Typescript - 51 - 의존성 분리를 위해 미러 타입 사용하기 내용 생략 요약 * 공개된 라이브러리를 사용하는 자바스크립트 사용자가 @types 의존성을 가지지 않게 해야한다. 그리고 웹 개발자가 NodeJS 관련된 의존성을 가지지 않게 해야한다. Effective Typescript - 50 - 오버로딩 타입보다는 조건부 타입을 사용하기 여러 종류의 파라메터를 받는 함수 시그니처를 명세할 때에는 함수 오버로딩 대신 조건부 타입을 활용한 함수 시그니처 명세가 더 정교한 타입 추론을 가능하게 할 수 있습니다. //비추 (타입 오버로딩) function double(x: number): number; function double(x: string): string; function double(x: any) { return x + x;}; const x = double(10); const y = double('yy'); const z: string | number = '11'; function zz(z : number | string){ double(z); // 오류 } // //추천 (조건부 타입) function double(x: T): T.. Effective Typescript - 49 - 콜백에서 this에 대한 타입 제공하기 자바스크립트에서 this 키워드는 매우 혼란스러운 기능입니다. class C { vals = [1, 2, 3]; logSquares(){ for (const val of this.vals) { console.log(val * val); } } } const c = new C(); c.logSquares(); // 1, 4, 9 const c2 = new C(); const method = c.logSquares; method(); // 오류, vals 속성을 읽을 수 없음. c.logSquares() 가 실제로는 두 가지 작업을 수행한다고 합니다. 1. C.prototype.logSquares를 호출. 2. this의 값을 c로 바인딩. JS에서 this 바인딩을 온전히 제거할 수 있는 방법은 .call.. 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.. 이전 1 2 3 4 5 6 ··· 8 다음