如何使用Typescript将TYPE添加到Object.assign

时间:2016-02-07 19:55:14

标签: typescript angular

我有一个类型化对象数组 - 所有对象都是类型:TodoModel。当我过滤它们时,要调整UI上的内容,您必须创建一个新数组并调整为过滤器更改的项目的属性以在angular2中重新过滤。当我创建新数组并添加更改的对象时,该对象不是类型,而数组中的其他2个对象仍然是类型:TodoModel。我无法弄清楚如何为新对象指定类型:(提前感谢您的帮助!

这是逻辑和代码的代码。下面我有一个突变阵列的前后屏幕截图:

case 'TOGGLE_TODO':

        const todo: ITodoModel = payload;

        const i = state.indexOf(todo);

        const status = todo.status == "started" ? "completed" : "started";

        const toggledTodo:ITodoModel = Object.assign(<ITodoModel>{}, todo, {status});

        state = [
            //... = spread operator - bascially loops through the array
            ...state.slice(0,i), // check items before
            toggledTodo, // clicked item
            ...state.slice(i + 1) // check items after
        ];

        console.log('toggle state');
        console.log(state);

return state;

Picture of a Before and after array mutation

1 个答案:

答案 0 :(得分:2)

如果您有权访问TodoModel构造函数,那么您可以使用以下内容:

const toggledTodo:ITodoModel = Object.assign(new TodoModel(), todo, {status})