Skip to content

wheercool/remutate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

remutate

Library for type safe mutations of immutable objects in typescript

npm install remutate

Motivation:

Using spread operators to mutate immutable objects in typescript in some cases may not be handled properly by compiler. Let's consider the following example:

interface User {
    firstName: string;
    lastName: string;
    age: number;
}

const changeUserName: (user: User) => User = user =>  {
    const name = 'New User Name';
    return { ...user, name }; // No compilation error
}

To help compiler just import mutate and use it instead of spread operators.

import { mutate } from 'remutate';

interface User {
    firstName: string;
    lastName: string;
    age: number;
}

const changeUserNameSafe: (user: User) => User = user => {
    const name = 'New User Name';
    return mutate(user, {name }); // Compilation error
}

About

Library for type safe mutations of immutable objects in typescript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published