To easily make every property on a type alias
or interface
to required properties, you can use the Required
utility type and pass the type alias
or interface
as the first type argument to it using the angled brackets symbol (<>
).
TL;DR
// a simple type
// with optional properties
type Person = {
name?: string;
age?: number;
};
// make all the properties in the
// `Person` type to be required
type RequiredPerson = Required<Person>;
// contents of the `RequiredPerson` type
/*
{
name: string;
age: number;
}
*/
For example, let's say we have a type called Person
with 2 optional properties called name
having the type of string
and age
having the type of number like this,
// a simple type
// with optional properties
type Person = {
name?: string;
age?: number;
};
Now to make all the properties in the Person
type to be required we can use the Required
utility type and pass the Person
interface as the first type argument to it using the angled brackets symbol (<>
).
It can be done like this,
// a simple type
// with optional properties
type Person = {
name?: string;
age?: number;
};
// make all the properties in the
// `Person` type to be required
type RequiredPerson = Required<Person>;
// contents of the `RequiredPerson` type
/*
{
name: string;
age: number;
}
*/
Now if you hover over the RequiredPerson
type you can see that all the properties are now required which is what we want to happen.
See the above code live in codesandbox.
That's all 😃!