-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmethods.test.ts
64 lines (60 loc) · 1.15 KB
/
methods.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { Numeric, Methods, TestType } from 'src';
import { test, expect } from 'vitest';
test('_', () => {
const result: TestType<
Methods<{
foo: () => void;
bar: (a: any) => string;
barBaz: string;
bazBar: Numeric;
}>,
'foo' | 'bar',
true
> = true;
expect(result).toBe(true);
});
test('Does not work on deep nested objects', () => {
const result: TestType<
Methods<{
foo: () => void;
bar: (a: any) => string;
barBaz: string;
x: {
a: () => number;
};
bazBar: Numeric;
}>,
'foo' | 'bar',
true
> = true;
expect(result).toBe(true);
});
test('should be never when no method is found', () => {
const result: TestType<
Methods<{
barBaz: string;
x: {
a: () => number;
};
bazBar: Numeric;
}>,
never,
true
> = true;
expect(result).toBe(true);
});
test('', () => {
const result: TestType<
Methods<{
barBaz: string;
x: {
a: () => number;
};
bazBar: Numeric;
i: (x: string, b: symbol) => () => void;
}>,
'i',
true
> = true;
expect(result).toBe(true);
});