From e3c2874862f6bfd877250894a517e3a662afd56d Mon Sep 17 00:00:00 2001 From: Hugo Martinet <59569523+hugomartinet@users.noreply.github.com> Date: Tue, 20 Aug 2024 09:15:17 +0200 Subject: [PATCH] add array tests for SetRequiredDeep --- test-d/set-required-deep.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/test-d/set-required-deep.ts b/test-d/set-required-deep.ts index 243910b69..9127c0bca 100644 --- a/test-d/set-required-deep.ts +++ b/test-d/set-required-deep.ts @@ -1,5 +1,5 @@ -import {expectType} from 'tsd'; -import type {SetRequiredDeep} from '../index'; +import {expectAssignable, expectNotAssignable, expectType} from 'tsd'; +import type {MergeDeep, OverrideProperties, SetRequired, SetRequiredDeep, Simplify, SimplifyDeep} from '../index'; // Update an optional nested key to required. declare const variation1: SetRequiredDeep<{a?: number; b?: {c?: string}}, 'b.c'>; @@ -20,3 +20,16 @@ expectType<{a: '1'; b: {c: boolean}} | {a: '2'; b: {c: boolean}}>(variation4); // Set key inside array to required declare const variation5: SetRequiredDeep<{a?: number; array?: Array<{b?: number}>}, 'array'>; expectType<{a?: number; array: Array<{b: number}>}>(variation5); + +// Set specific key inside array to required +expectAssignable}, 'array.0.b'>>({a: 1, array: [{b: 2}]}); +expectNotAssignable}, 'array.0.b'>>({array: [{}]}); + +// Set only specified keys inside array to required +expectAssignable}, `array.${number}.b`>>({array: [{b: 4}]}); +expectNotAssignable}, `array.${number}.b`>>({array: [{}]}); + +// Set specific key inside specific array item to required +expectAssignable>({array: [{}, {c: 'foo'}]}); +expectNotAssignable>({array: [{b: 2}, {}]}); +