value = Object.assign(new Model(), value)
mit prefer-object-spread
aktiviert
Fusselfehler, Auto-Fix, um Objektverbreitung zu verwenden
nichts. Diese Regel sollte Fälle ignorieren, in denen das erste Argument von Object.assign
eine Klasseninstanz ist.
--project
wird, können wir prüfen, ob der Typ des ersten Arguments klassenähnlich istnew ...
suchen und den Ausdruck ignorierenwie berichtet in https://github.com/palantir/tslint/issues/2618#issuecomment -303879255
Object.assign
hat Nebenwirkungen auf das erste Argument. (Deshalb transpiliert TypeScript { ...x, ...y }
in Object.assign({}, x, y)
.) Die Regel sollte nur aktiviert werden, wenn das erste Argument ein neues Objektliteral ist.
Die Regel sollte nur aktiviert werden, wenn das erste Argument ein neues Objektliteral ist.
Technisch gesehen hast du recht. Aber ich sehe oft Fehler, bei denen Programmierer nicht auf die Nebenwirkungen des ersten Arguments achten und sie sowieso einen nicht wörtlichen Wert angeben, wenn sie _eigentlich_ dasselbe tun wollten wie die Objektverbreitung. Also würde ich immer noch wollen, dass diese Regel das abfängt. Vielleicht könnte es ein Opt-in sein...
Wenn das erste Argument kein Objektliteral ist, erzeugt die Regel nur dann einen Fehler, wenn dem Ergebnis etwas zugewiesen wird.
Die Zuweisung des Rückgabewerts von Object.assign ist nur sinnvoll, wenn das erste Argument ein CallExpression, NewExpression oder ähnliches ist. Alles andere, zB ein Identifier oder PropertyAccessExpression, sollte immer noch ein Fehler sein.
Und dafür ist die Typprüfung nicht erforderlich.
Hilfreichster Kommentar
Wenn das erste Argument kein Objektliteral ist, erzeugt die Regel nur dann einen Fehler, wenn dem Ergebnis etwas zugewiesen wird.
Die Zuweisung des Rückgabewerts von Object.assign ist nur sinnvoll, wenn das erste Argument ein CallExpression, NewExpression oder ähnliches ist. Alles andere, zB ein Identifier oder PropertyAccessExpression, sollte immer noch ein Fehler sein.
Und dafür ist die Typprüfung nicht erforderlich.