javascript - React ve Typescript'te spread operatörü hatası
Bir fonksiyonum var:
handleMarkerClick(targetMarker) {
this.setState({
markers: this.state.markers.map(marker => {
if (marker === targetMarker) {
return {
...marker, // error TS1136: Property assignment expected.
showInfo: true, // error TS1005: ',' expected.
}; // error TS1135: Argument expression expected, error TS1005: ')' expected.
}
return marker; // error TS1068: Unexpected token. A constructor, method, accessor, or property was expected.
}), // Declaration or statement expected.
});
}
ve birçok hata görüyorum:
- Özellik ataması bekleniyor.
- '','' bekleniyor.
- Argüman ifadesi bekleniyor.
- Bu dosya türünü işlemek için uygun bir yükleyiciye ihtiyacınız olabilir. | exports.__esModule=true; | exports["default"]=PopUpInfoWindowExample; | return marker;
Ama 'marker' yakınındaki '...' kısmını silince, fonksiyonum doğru çalışmadı.
Bunu yaparım:
handleMarkerClick(targetMarker) {
this.setState({
markers: this.state.markers.map(marker => {
if (marker === targetMarker) {
return {
marker, // delete ...
showInfo: true,
};
}
return marker;
}),
});
}
Neden? Doğru işlevi elde etmek için ne yapabilirim?
Cevap #1
Eğer marker bir nesne ise, spread operatörünü kullanmak yerine Object.assign() kullanmayı deneyebilirsiniz. İşte bir örnek:
marker = Object.assign({}, marker);
