mirror of
https://github.com/sindresorhus/type-fest.git
synced 2025-12-08 19:25:05 +00:00
19 lines
889 B
TypeScript
19 lines
889 B
TypeScript
import {expectNotAssignable, expectType} from 'tsd';
|
|
import type {SetOptional} from '../index';
|
|
|
|
// Update one required and one optional to optional.
|
|
declare const variation1: SetOptional<{a: number; b?: string; c: boolean}, 'b' | 'c'>;
|
|
expectType<{a: number; b?: string; c?: boolean}>(variation1);
|
|
|
|
// Update two required to optional.
|
|
declare const variation2: SetOptional<{a: number; b: string; c: boolean}, 'a' | 'b'>;
|
|
expectType<{a?: number; b?: string; c: boolean}>(variation2);
|
|
|
|
// Three optional remain optional.
|
|
declare const variation3: SetOptional<{a?: number; b?: string; c?: boolean}, 'a' | 'b' | 'c'>;
|
|
expectType<{a?: number; b?: string; c?: boolean}>(variation3);
|
|
|
|
// Fail if type changes even if optional is right.
|
|
declare const variation4: SetOptional<{a: number; b?: string; c: boolean}, 'b' | 'c'>;
|
|
expectNotAssignable<{a: boolean; b?: string; c?: boolean}>(variation4);
|