-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnon-required-keys.test.ts
50 lines (46 loc) · 1.15 KB
/
non-required-keys.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
import {
NonRequiredKeys,
Primitive,
Nullable,
TestType,
Optional,
EmptyObject,
} from 'src';
import { test, expect, describe } from 'vitest';
describe('Non required as in, keep any property that is marked with the "?" operator, does not mean it will pick up properties with a type definion having undefined | other types', () => {
test('_', () => {
const result: TestType<
NonRequiredKeys<{
bar: string;
foo: number;
fooBar: string;
baz?: Nullable;
bazFoo: null | undefined;
barFoo: Optional<Primitive>;
}>,
'baz',
true
> = true;
expect(result).toBe(true);
});
test('_', () => {
const result: TestType<
NonRequiredKeys<{ a: number; b?: string }>,
'b',
true
> = true;
expect(result).toBe(true);
});
test('_', () => {
const result: TestType<NonRequiredKeys<EmptyObject>, never, true> = true;
expect(result).toBe(true);
});
test('_', () => {
const result: TestType<
NonRequiredKeys<{ a: undefined; b?: undefined; c: string; d: null }>,
'b',
true
> = true;
expect(result).toBe(true);
});
});