Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mencapai Semakan Jenis Masa Jalan untuk Antara Muka dalam TypeScript?

Bagaimana untuk Mencapai Semakan Jenis Masa Jalan untuk Antara Muka dalam TypeScript?

DDD
DDDasal
2024-11-17 13:24:01600semak imbas

How to Achieve Runtime Type Checking for Interfaces in TypeScript?

Semak Jenis Antara Muka dalam TypeScript

Dalam TypeScript, antara muka mentakrifkan kontrak yang boleh diikuti oleh objek, tetapi mereka tidak menguatkuasakan pelaksanaannya pada masa jalan . Ini bermakna menggunakan instanceof untuk menyemak sama ada pembolehubah melaksanakan antara muka akan gagal.

Untuk mencapai pemeriksaan jenis masa jalan untuk antara muka, anda boleh menggunakan pengawal jenis tersuai. Ini ialah fungsi yang mengambil objek sebagai hujah dan mengembalikan boolean yang menunjukkan sama ada ia melaksanakan antara muka yang diingini:

interface A {
    member: string;
}

function instanceOfA(object: any): object is A {
    return 'member' in object;
}

var a: any = { member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}

Untuk antara muka dengan bilangan ahli yang ramai, anda boleh menambah sifat diskriminator:

interface A {
    discriminator: 'I-AM-A';
    member: string;
}

function instanceOfA(object: any): object is A {
    return object.discriminator === 'I-AM-A';
}

var a: any = { discriminator: 'I-AM-A', member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}

Ini membolehkan pemeriksaan jenis yang cekap tanpa perlu menyemak semua ahli secara individu.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Semakan Jenis Masa Jalan untuk 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