value = Object.assign(new Model(), value)
с включенным prefer-object-spread
сбой lint, автоматическое исправление для использования распространения объекта
ничего такого. это правило должно игнорировать случаи, когда первый аргумент Object.assign
является экземпляром класса.
--project
, мы можем проверить, является ли тип первого аргумента классовымnew ...
и проигнорировать выражениекак указано в https://github.com/palantir/tslint/issues/2618#issuecomment -303879255
Object.assign
имеет побочные эффекты для своего первого аргумента. (Вот почему TypeScript преобразует { ...x, ...y }
в Object.assign({}, x, y)
.) Правило должно активироваться, только если первый аргумент является новым литералом объекта.
Правило должно активироваться только в том случае, если первый аргумент - это новый литерал объекта.
Что ж, технически ты прав. Но я часто вижу ошибки, когда программисты не заботятся о побочных эффектах первого аргумента и в любом случае предоставляют нелитальное значение, когда они _ фактически_ намеревались сделать то же самое, что и распространение объекта. Так что я все еще хочу, чтобы это правило улавливало это. Может быть, это могло быть согласие ...
Если первый аргумент не является литералом объекта, правило вызывает ошибку, только если результат присваивается чему-то.
Назначение возвращаемого значения Object.assign имеет смысл только в том случае, если первым аргументом является CallExpression, NewExpression или аналогичный. Все остальное, например идентификатор или PropertyAccessExpression, все равно должно быть ошибкой.
И это не требует проверки типов.
Самый полезный комментарий
Если первый аргумент не является литералом объекта, правило вызывает ошибку, только если результат присваивается чему-то.
Назначение возвращаемого значения Object.assign имеет смысл только в том случае, если первым аргументом является CallExpression, NewExpression или аналогичный. Все остальное, например идентификатор или PropertyAccessExpression, все равно должно быть ошибкой.
И это не требует проверки типов.