Home > Software engineering >  How to create a type that must include some properties, but be ok with it including additional prope
How to create a type that must include some properties, but be ok with it including additional prope

Time:03-14

I have a util function whose first parameter param must include (simplified for example) the properties param.X and param.Y, but it doesn't matter what other properties it has. For instance it can also have param.Z but that's not used by the util function and can be ignored.

How can I type the param such that it enforces this constraint without complaining something like Z not found on type ParamType?

CodePudding user response:

Intersect the object type with Record<keyof any, unknown>.

const fn = (obj: { x: string; y: string } & Record<keyof any, unknown>) => {
};

fn({x: 'x'}) // Fails
fn({x: 'x', y: 'y'}) // Passes
fn({x: 'x', y: 'y', z: 'z'}) // Passes

CodePudding user response:

Use Partial<ParamType>. This allows you to specify only a subset of the type.

https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype

  • Related