Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengurangkan Objek JavaScript ke Sifat Antara Muka dalam TypeScript?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 01:55:27797semak imbas

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

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!

Kenyataan:
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