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

Bagaimana untuk Mengurangkan Objek JavaScript kepada Hanya Sifat Antara Muka dalam TypeScript?

Patricia Arquette
Lepaskan: 2024-10-31 06:12:01
asal
741 orang telah melayarinya

How to Reduce JavaScript Objects to Only Interface Properties in TypeScript?

Mengurangkan Objek JavaScript kepada Sifat Antara Muka

Apabila bekerja dengan TypeScript, kami sering menghadapi keperluan untuk mengurangkan objek JavaScript untuk hanya mengandungi sifat yang diisytiharkan dalam antara muka. Ini amat berguna apabila menghantar data ke perkhidmatan REST yang menjangkakan skema tertentu.

Pertimbangkan antara muka berikut:

<code class="typescript">interface MyInterface {
  test: string;
}</code>
Salin selepas log masuk

Dan pelaksanaan yang termasuk sifat tambahan:

<code class="typescript">class MyTest implements MyInterface {
  test: string;
  newTest: string;
}</code>
Salin selepas log masuk

Isu timbul apabila kami cuba menggunakan kaedah toJson Angular untuk mensirikan contoh MyTest untuk dihantar ke perkhidmatan REST. Kaedah toJson termasuk sifat newTest, yang bukan sebahagian daripada antara muka. Ini boleh membawa kepada ralat pada bahagian pelayan.

Untuk menyelesaikan isu ini, kita perlu mencari jalan untuk mengurangkan contoh MyTest supaya hanya mengandungi sifat yang diisytiharkan dalam antara muka MyInterface. Walau bagaimanapun, ini tidak boleh dilakukan secara langsung kerana antara muka dalam TypeScript pada asasnya adalah pemegang tempat yang tidak mempunyai perwakilan masa jalan.

Sebaliknya, kami boleh menggunakan penyelesaian. Satu pendekatan ialah mentakrifkan antara muka sebagai kelas dengan pemula sifat:

<code class="typescript">class MyInterface {
  test: string = undefined;
}</code>
Salin selepas log masuk

Menggunakan kelas ini sebagai antara muka, kita kemudian boleh menggunakan perpustakaan seperti Lodash untuk memilih hanya sifat yang sepadan dengan antara muka:

<code class="typescript">import _ from 'lodash';

const before = { test: "hello", newTest: "world"};
let reduced = new MyInterface();
_.assign(reduced , _.pick(before, _.keys(reduced)));
console.log('reduced', reduced); // { test: "hello" }</code>
Salin selepas log masuk

Penyelesaian ini secara berkesan mengurangkan contoh MyTest untuk hanya memasukkan sifat yang diisytiharkan dalam antara muka MyInterface, memberikan penyelesaian yang mudah dan pragmatik kepada cabaran.

Atas ialah kandungan terperinci Bagaimana untuk Mengurangkan Objek JavaScript kepada Hanya 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