📜  typescript recursive partial - TypeScript (1)

📅  最后修改于: 2023-12-03 15:35:24.221000             🧑  作者: Mango

Typescript Recursive Partial

In Typescript, Partial<Type> allows us to make all the properties in Type optional. But what if we want to make all properties in Type and its sub-properties optional? That's where Recursive partial comes in.

Recursive partial is a Typescript type that allows us to make all properties in a nested object optional. Let's see an example:

interface Person {
  name: string;
  age: number;
  address: {
    city: string;
    street: string;
    country: string;
  };
}

If we want to make all properties in Person and its sub-properties optional, we can create a Recursive partial type using the following code:

type RecursivePartial<T> = {
  [P in keyof T]?: T[P] extends object ? RecursivePartial<T[P]> : T[P];
};

Now, we can use RecursivePartial<Person> to make all properties in the Person interface and its sub-properties optional:

type OptionalPerson = RecursivePartial<Person>;

const person: OptionalPerson = {
  name: "John",
  address: {
    city: "New York"
  }
};

In the code above, we can see that we only provided the name and address.city properties, but the rest of the properties are still optional due to the use of RecursivePartial<Person>.

Recursive partial can save us a lot of time and make our code more concise when dealing with nested objects.

Conclusion

In conclusion, Recursive partial is a powerful feature in Typescript that allows us to make all properties in a nested object optional. By using RecursivePartial<Type>, we can save ourselves a lot of time and make our code more concise when dealing with complex data structures.