hry-types
Version:
typescript工具类型库
66 lines (36 loc) • 1.55 kB
text/typescript
import type { Test } from "../../src";
import { Checking } from "../../src";
import type { IfEquals } from "../../src/Any/_api";
import type { ComputeIntersection } from "../../src/Object/_api";
type Test1 = IfEquals<1, 1>;
type Test1Expect = unknown;
Checking<Test1, Test1Expect, Test.Pass>;
type Test2 = IfEquals<1, 2>;
type Test2Expect = 1;
Checking<Test2, Test2Expect, Test.Pass>;
type Test3 = IfEquals<{}, {}>;
type Test3Expect = unknown;
Checking<Test3, Test3Expect, Test.Pass>;
type Test4 = IfEquals<never, never>;
type Test4Expect = unknown;
Checking<Test4, Test4Expect, Test.Pass>;
type Test5 = IfEquals<1 | 2, 2 | 1>;
type Test5Expect = unknown;
Checking<Test5, Test5Expect, Test.Pass>;
type Test6 = IfEquals<1, 1, "Then">;
Checking<Test6, "Then", Test.Pass>;
type Test7 = IfEquals<1, 2, "Then">;
Checking<Test7, 1, Test.Pass>;
type Test8 = IfEquals<1, 2, "Then", "Else">;
Checking<Test8, "Else", Test.Pass>;
type Test9 = IfEquals<never, never, "Then", "Else">;
Checking<Test9, "Then", Test.Pass>;
// 交叉对象不会计算
type Test10 = IfEquals<{ a: number } & { b: number }, { a: number; b: number }, "Then", "Else">;
Checking<Test10, "Else", Test.Pass>;
// 预先计算交叉对象
type Test11 = IfEquals<ComputeIntersection<{ a: number } & { b: number }>, { a: number; b: number }, "Then", "Else">;
Checking<Test11, "Then", Test.Pass>;
// 联合对象不会计算
type Test12 = IfEquals<{ a: number } | { b: number }, { a?: number; b?: number }, "Then", "Else">;
Checking<Test12, "Else", Test.Pass>;