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);