Bagaimanakah kita boleh memastikan bahawa objek hanya mengandungi sifat yang ditakrifkan dalam antara mukanya apabila menghantarnya melalui angular.toJson?

Mary-Kate Olsen
Lepaskan: 2024-10-31 16:28:02
asal
128 orang telah melayarinya

How can we ensure that an object only contains properties defined in its interface when passing it through angular.toJson?

Memastikan Pematuhan Objek dengan Antara Muka: Mengalih Keluar Sifat Luaran

Antara muka TypeScript mentakrifkan spesifikasi kontrak untuk kelas atau objek. Walau bagaimanapun, semasa pelaksanaan, sifat tambahan boleh ditambah melebihi yang ditakrifkan oleh antara muka, yang membawa kepada ketidakkonsistenan. Menangani isu ini menjadi penting, terutamanya apabila menghantar objek yang dikurangkan melalui angular.toJson untuk komunikasi RESTful.

Pertimbangkan antara muka MyInterface dengan ujian sifat tunggal:

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

Dan pelaksanaannya dengan tambahan property newTest:

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

Soalan:

Bagaimana kita boleh memastikan objek yang dikurangkan, apabila diberikan daripada objek seperti MyTest, hanya mengandungi sifat yang diisytiharkan dalam MyInterface , tidak termasuk newTest?

Jawapan:

Malangnya, tidak mungkin untuk menanggalkan secara langsung sifat luar daripada objek pada masa jalan hanya berdasarkan definisi antara muka. Antara muka dalam TypeScript berfungsi sebagai binaan masa reka bentuk dan sifatnya tidak tersedia semasa pelaksanaan.

Satu penyelesaian berpotensi yang dicadangkan ialah mentakrifkan "antara muka" sebagai kelas, dengan itu menyediakan pelaksanaan masa jalan. Ini membolehkan kami memanfaatkan Lodash untuk memilih hanya sifat yang dikehendaki daripada objek input:

<code class="typescript">class MyInterface {
  test: string = undefined;
}</code>
Salin selepas log masuk
<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)//contains only 'test' property</code>
Salin selepas log masuk

Dengan menggunakan kaedah ini, kami boleh mengekstrak sifat yang ditentukan dengan berkesan, mencipta objek yang mematuhi antara muka kontrak dan sedia untuk bersiri melalui angular.toJson.

Atas ialah kandungan terperinci Bagaimanakah kita boleh memastikan bahawa objek hanya mengandungi sifat yang ditakrifkan dalam antara mukanya apabila menghantarnya melalui angular.toJson?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!