value = Object.assign(new Model(), value)
com prefer-object-spread
habilitado
falha de lint, correção automática para usar propagação de objeto
nada. esta regra deve ignorar casos onde o primeiro argumento para Object.assign
é uma instância de classe.
--project
é fornecido, podemos verificar se o tipo do primeiro argumento é semelhante a uma classenew ...
e ignorar a expressãoconforme relatado em https://github.com/palantir/tslint/issues/2618#issuecomment -303879255
Object.assign
tem efeitos colaterais em seu primeiro argumento. (É por isso que o TypeScript transpila { ...x, ...y }
em Object.assign({}, x, y)
.) A regra só deve ser ativada se o primeiro argumento for um literal de objeto novo.
A regra só deve ser ativada se o primeiro argumento for um literal de objeto novo.
Bem, tecnicamente, você está certo. Mas frequentemente vejo erros em que os programadores não são cuidadosos sobre os efeitos colaterais no primeiro argumento e fornecem um valor não literal de qualquer maneira quando eles _realmente_ pretendiam fazer a mesma coisa que a propagação do objeto. Então, eu ainda gostaria que essa regra capturasse isso. Talvez pudesse ser opt-in ...
Se o primeiro argumento não for um literal de objeto, a regra só produzirá um erro se o resultado for atribuído a algo.
Atribuir o valor de retorno de Object.assign apenas faz sentido se o primeiro argumento for CallExpression, NewExpression ou semelhante. Todo o resto, por exemplo, um Identifier ou PropertyAccessExpression ainda deve ser um erro.
E isso não requer o verificador de tipo.
Comentários muito úteis
Se o primeiro argumento não for um literal de objeto, a regra só produzirá um erro se o resultado for atribuído a algo.
Atribuir o valor de retorno de Object.assign apenas faz sentido se o primeiro argumento for CallExpression, NewExpression ou semelhante. Todo o resto, por exemplo, um Identifier ou PropertyAccessExpression ainda deve ser um erro.
E isso não requer o verificador de tipo.