Mengurangkan Objek JavaScript kepada Sifat Antara Muka
Dalam TypeScript, antara muka bertindak sebagai pelan tindakan untuk struktur data. Walau bagaimanapun, semasa masa jalanan, antara muka kosong, menjadikannya mustahil untuk mengurangkan objek secara langsung untuk hanya mengandungi sifat yang ditakrifkan di dalamnya.
Pelaksanaan
Walau bagaimanapun, terdapat beberapa penyelesaian kaedah:
Menggunakan Kelas
Tentukan antara muka sebagai kelas sebaliknya:
class MyInterface { test: string = undefined; }
Kemudian, gunakan Lodash untuk mengekstrak sifat yang diperlukan:
import _ from "lodash"; const before = { test: "hello", newTest: "world" }; let reduced = new MyInterface(); _.assign(reduced, _.pick(before, _.keys(reduced))); console.log("reduced", reduced); // contains only "test" property
Assebly Operator
Sebagai alternatif, anda juga boleh menggunakan operator pemasangan:
let reduced = {...new MyInterface(), ...test};
Ini menggabungkan objek "MyInterface" kosong dengan objek "ujian", menimpa sebarang sifat pendua.
Mengapa Gunakan Kaedah Ini?
Pendekatan ini berguna apabila menghantar data ke perkhidmatan REST menggunakan "toJson" Angular kaedah. Sifat "newTest", walaupun tidak boleh diakses semasa penyusunan, akan diubah oleh "toJson", menyebabkan perkhidmatan REST menolak JSON kerana sifat tidak sah. Dengan mengurangkan objek kepada sifat antara muka, hanya data yang dijangka dihantar, memastikan komunikasi yang betul dengan perkhidmatan.
Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Objek JavaScript ke Sifat Antara Muka dalam TypeScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!