Dalam ActionScript, dimungkinkan untuk memeriksa jenis pada saat dijalankan menggunakan operator is :
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject);// true
trace(mySprite is IEventDispatcher); // true
Apakah mungkin untuk mendeteksi jika suatu variabel (extends atau) adalah kelas atau antarmuka tertentu dengan TypeScript?
Saya tidak dapat menemukan apa pun tentang itu dalam spesifikasi bahasa. Itu harus ada ketika bekerja dengan kelas / antarmuka.
sumber
Std.is(pet, Fish)
, yang bekerja pada tipe, antarmuka, dll.isFish
sendiri adalah predikat yang dibuat, dan tubuhnya tidak harus menjadi predikat satu-baris. Keuntungan dari hal ini adalah bahwa kompiler memahami pada waktu kompilasi fungsi-fungsi yang sesuai yang mungkin, tetapi kode Anda di dalamisFish
dieksekusi saat runtime. Anda bahkan bisa membuat penjaga berisiinstanceof
pernyataan, misalnyareturn pet instanceof Fish
(dengan asumsi itu kelas dan bukan antarmuka), tetapi ini tidak perlu karena kompiler mengertiinstanceof
secara langsung.(pet as Fish)
karena tslinter akan mengeluh(<Fish>pet)
. Lihat tslint docAnda dapat menggunakan
instanceof
operator untuk ini. Dari MDN:Jika Anda tidak tahu apa prototipe dan rantai prototipe saya sangat merekomendasikan mencarinya. Juga di sini adalah contoh JS (TS bekerja serupa dalam hal ini) yang mungkin menjelaskan konsep:
Rantai prototipe dalam contoh ini adalah:
animal> Animal.prototype> Object.prototype
sumber