Partial<T> esto que es en TypeScript?

Unos días a tras me encontré esto en el codebase de la empresa donde trabajo.

applicationValues: Partial<ApplicationValues>;

Como ya he comentado anteriormente nunca había trabajado con un codebase en el backend completamente escrito en Javascript/Typescript. Esto va siendo un reto interesante por lo que he estado aprendiendo nuevas cosas sobre JS. Hoy le tocó a los Partials

Resulta que si tienes un clase/interfaz con X atributos obligatorios pero en algún escenario quieres solo usar o enviar/utilizar algunos atributos, es decir no todos dado que son obligatorios, aquí es donde el Partial te ayuda. Vemos un ejemplo para entender mejor.

interface User {
    id: number;
    name: string;
    age: number;
}

function updateUser(user: Partial<User>): void {
    // Function to update user information
}

// Example usage
const userUpdate: Partial<User> = {
    name: "John"
};

updateUser(userUpdate);

Como vemos en este pequeño ejemplo nuestra interfaz User tiene 3 atributos obligatorios . Si en nuestra funcion updateUser solo usamos como atributo el User, tendríamos que enviar los 3 atributos.

function updateUser(user: User): void {
    // funcion para actualizar el usuario
}
const userUpdate: User = {
     id: 12345,
    name: "Jhon",
    age: 22,
};

Entonces usando el user: Partial<User> en nuestra función nos permite solo enviar los atributos que querramos.

Saludos a todos y happy coding.