value = Object.assign(new Model(), value)
con prefer-object-spread
habilitado
falla de pelusa, autocorrección para usar la propagación del objeto
nada. esta regla debería ignorar los casos en los que el primer argumento de Object.assign
es una instancia de clase.
--project
, podemos verificar si el tipo del primer argumento es de clasenew ...
e ignorar la expresióncomo se informa en https://github.com/palantir/tslint/issues/2618#issuecomment -303879255
Object.assign
tiene efectos secundarios en su primer argumento. (Es por eso que TypeScript transpila { ...x, ...y }
a Object.assign({}, x, y)
.) La regla solo debe activarse si el primer argumento es un nuevo literal de objeto.
La regla solo debe activarse si el primer argumento es un nuevo literal de objeto.
Bueno, técnicamente, tienes razón. Pero a menudo veo errores en los que los programadores no tienen cuidado con los efectos secundarios en el primer argumento y proporcionan un valor no literal de todos modos cuando, en realidad, tenían la intención de hacer lo mismo que la propagación del objeto. Así que todavía querría que esta regla captara eso. Tal vez podría ser opt-in ...
Si el primer argumento no es un objeto literal, la regla solo produce un error si el resultado se asigna a algo.
Asignar el valor de retorno de Object.assign solo tiene sentido si el primer argumento es CallExpression, NewExpression o similar. Todo lo demás, por ejemplo, un identificador o PropertyAccessExpression, debería ser un error.
Y eso no requiere el verificador de tipos.
Comentario más útil
Si el primer argumento no es un objeto literal, la regla solo produce un error si el resultado se asigna a algo.
Asignar el valor de retorno de Object.assign solo tiene sentido si el primer argumento es CallExpression, NewExpression o similar. Todo lo demás, por ejemplo, un identificador o PropertyAccessExpression, debería ser un error.
Y eso no requiere el verificador de tipos.