type MyTypeOptions = {
fieldIsRequired: boolean;
};
type MyType<T extends MyTypeOptions> = {
field: T['fieldIsRequired'] extends true ? string : string | null;
};
const one: MyType<{ fieldIsRequired: true }> = {
// @ts-expect-error
field: null,
};
const two: MyType<{ fieldIsRequired: true }> = {
field: 'value',
};
const three: MyType<{ fieldIsRequired: false }> = {
field: null,
};
type MyTypeOptions = {
fieldIsRequired: boolean;
};
type MyType<T extends MyTypeOptions> = {
field: T['fieldIsRequired'] extends true ? string : string | null;
};
const one: MyType<{ fieldIsRequired: true }> = {
// @ts-expect-error
field: null,
};
const two: MyType<{ fieldIsRequired: true }> = {
field: 'value',
};
const three: MyType<{ fieldIsRequired: false }> = {
field: null,
};