type-fest/test-d/except.ts
orimiles5 c5743c9dab
Except: Add requireExactProps option (#560)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
Co-authored-by: Tommy <tmitchell7@uh.edu>
2023-03-23 16:54:14 +07:00

32 lines
793 B
TypeScript

import {expectType, expectError} from 'tsd';
import type {Except} from '../index';
declare const except: Except<{a: number; b: string}, 'b'>;
expectType<{a: number}>(except);
expectError(except.b);
const nonStrict = {
a: 1,
b: '2',
};
const nonStrictAssignment: typeof except = nonStrict; // No error
declare const strictExcept: Except<{a: number; b: string}, 'b', {requireExactProps: true}>;
expectError(() => {
const strictAssignment: typeof strictExcept = nonStrict;
});
// Generic properties
type Example = {
[key: string]: unknown;
foo: number;
bar: string;
};
const test: Except<Example, 'bar', {requireExactProps: false}> = {foo: 123, bar: 'asdf'};
expectType<number>(test.foo);
// eslint-disable-next-line @typescript-eslint/dot-notation
expectType<unknown>(test['bar']);