Bagaimana untuk Mengurangkan Objek JavaScript ke Sifat Antara Muka dalam TypeScript?

Mary-Kate Olsen
Lepaskan: 2024-11-01 01:55:27
asal
762 orang telah melayarinya

How to Reduce a JavaScript Object to Interface Properties in TypeScript?

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

Assebly Operator

Sebagai alternatif, anda juga boleh menggunakan operator pemasangan:

let reduced = {...new MyInterface(), ...test};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan