프로젝트를 공개하려면 테스크 코드를 작성하는 것은 필수이며, 타입 선언도 테스트를 거쳐야 합니다.
함수 실행만 하는 테스트 코드는 의미가 없는 것은 아니지만, 실제 반환 타입을 체크하는 것이 훨씬 좋은 테스트 코드입니다.
declare function map<U, T>(array: U[], fn: (u : U) => T): T[];
const lengths: number[] = map(['apple', 'banana'], name=> name.length);
//이와 같이 변수에 불필요한 타입 선언(아이템 19)에서 하지마라는 것을 하고 있지만, 테스트 코드 관점에서는 중요합니다.
|
하지만, 테스팅을 위해 할당을 사용하는 방법에는 두 가지 근본적 문제가 있다고 합니다.
첫 번째, 불필요한 변수를 만들어야 합니다.
이에 대한 해결 방법은 헬퍼 함수를 만드는 것입니다.
declare function map<U, T>(array: U[], fn: (u : U) => T): T[];
// 변수를 도입하는 대신 헬퍼 함수를 정의 하기
function assertType<T>(x: T) {};
assertType<number []>(map(['apple', 'banana'], name=> name.length));
const n = 12;
assertType<number>(n) // 정상
assertType<string>(n) // 비정상
|
그러나, 헬퍼 함수를 만들어도 어떠한 상황에서는 체크하기에는 역부족입니다.
const city = ['seoul', 'busan', 'incheon'];
const add = (a: number, b:number) => a + b;
assertType<(a: number, b: number) => number>(add); //정상
const double = (x: number) => 2 * x;
assertType<(a:number, b:number) => number>(double); //정상?
|
정리포기..
그냥 'dtslint' 같은 도구 씁시다.
https://github.com/microsoft/dtslint
GitHub - microsoft/dtslint: A utility built on TSLint for linting TypeScript declaration (.d.ts) files.
A utility built on TSLint for linting TypeScript declaration (.d.ts) files. - GitHub - microsoft/dtslint: A utility built on TSLint for linting TypeScript declaration (.d.ts) files.
github.com
'IT' 카테고리의 다른 글
Effective Typescript - 54 - 객체를 순회하는 노하우 (1) | 2022.01.24 |
---|---|
Effective Typescript - 53 - 타입스크립트 기능보다는 ECMAScript 기능을 사용하기 (0) | 2022.01.24 |
Effective Typescript - 51 - 의존성 분리를 위해 미러 타입 사용하기 (0) | 2022.01.24 |
Effective Typescript - 50 - 오버로딩 타입보다는 조건부 타입을 사용하기 (0) | 2022.01.24 |
Effective Typescript - 49 - 콜백에서 this에 대한 타입 제공하기 (0) | 2022.01.24 |