Untuk menjelaskan masalah aktual yang ditunjukkan tslint, kutipan dari dokumentasi JavaScript untuk ... dalam pernyataan :
Lingkaran akan beralih pada semua properti enumerable dari objek itu sendiri dan yang diwarisi objek dari prototipe konstruktornya (properti lebih dekat ke objek dalam rantai prototipe menimpa properti prototipe).
Jadi, pada dasarnya ini berarti Anda akan mendapatkan properti yang mungkin tidak Anda harapkan (dari rantai prototipe objek).
Untuk mengatasi ini, kita perlu beralih hanya pada properti yang dimiliki objek. Kita dapat melakukan ini dengan dua cara berbeda (seperti yang disarankan oleh @Maxxx dan @Qwertiy).
Solusi pertama
for (const field of Object.keys(this.formErrors)) {
...
}
Di sini kita menggunakan metode Object.Keys () yang mengembalikan array dari properti enumerable milik objek tertentu, dalam urutan yang sama seperti yang disediakan oleh for ... in loop (perbedaannya adalah for-in loop menyebutkan properti di rantai prototipe juga).
Solusi kedua
for (var field in this.formErrors) {
if (this.formErrors.hasOwnProperty(field)) {
...
}
}
Dalam solusi ini kami mengulangi semua properti objek termasuk yang ada di rantai prototipe tetapi menggunakan metode Object.prototype.hasOwnProperty () , yang mengembalikan boolean yang menunjukkan apakah objek memiliki properti yang ditentukan sebagai properti yang dimiliki (tidak diwariskan), untuk memfilter properti warisan keluar.