최종 릴리스 0.4
다음과 같은 전체 코드를 가져왔습니다.
/**
@example
``
import {isEqualType} from 'ts-extras';
const isEqual = isEqualType<ExpectedType, ActualType>();
``
*/
export type IsEqual<ExpectedType, ActualType> =
(<T>() => T extends ExpectedType ? 1 : 2) extends
(<T>() => T extends ActualType ? 1 : 2)
? true
: false;
function assertType<T extends boolean>() {
}
export function isEqualType<T, G>(): boolean;
export function isEqualType<T, G>(value : G): boolean;
export function isEqualType<T, G>(a: T, b: G){
return assertType<IsEqual<IsEqual<T, G>, true>>();
}
이제 주요 작업 중 하나는 코드가 작동하는지 여부를 테스트하고 확인하는 것이었습니다.
프로젝트는 이미 테스트 프레임워크
xo
와 ava
를 사용하고 있으므로 이제 xo 및 ava의 테스트 스타일을 살펴보고 테스트 케이스를 작성하기만 하면 됩니다.테스트 케이스를 작성하는 방법도 작성 가능한 유형이 많아 어떤 케이스를 작성하고 비교해야 하는지 명확하지 않아 다소 어려웠습니다. 그런 다음 사람들이 다른 프로젝트에서 테스트를 수행한 방법을 찾을 수 있는 인터넷으로 돌아갔습니다. 나는 그것에 대한 요약 이해를 얻기 위해 그것을 구현하기 시작했고 몇 가지 추가 및 빼기 후에 테스트 케이스를 생각해 냈고 테스트할 준비가 되었습니다. 많은 경우가 통과하고 가능한 경우의 넓은 스펙트럼을 다룹니다. 그러나 특별한 경우를 놓쳤을지 의심스럽습니다. 좋은 점은 99% 이상의 케이스를 다룹니다. 하지만 제가 놓친 케이스의 1%를 검색하기를 고대하고 있습니다.
테스트 케이스는 다음과 같습니다.
import test from 'ava';
import {isEqualType} from '../source/index.js';
test('isEqual()', t => {
t.true(isEqualType<1, 1>());
t.true(isEqualType<any, any>());
t.true(isEqualType<unknown, unknown>());
t.false(isEqualType<{}, {x:1}>());
t.false(isEqualType<1, 2>());
t.false(isEqualType<1, any>());
t.false(isEqualType<1, unknown>());
t.false(isEqualType<any, unknown>());
});
그런 다음 추가 정보 페이지를 업데이트하고 커밋을 푸시하고 PR을 만들었습니다.
Reference
이 문제에 관하여(최종 릴리스 0.4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ritikbheda/final-release-04-2in8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)