Bagaimana cara menangani casting tipe dalam TypeScript atau Javascript?
Katakanlah saya memiliki kode TypeScript berikut:
module Symbology {
export class SymbolFactory {
createStyle( symbolInfo : SymbolInfo) : any {
if (symbolInfo == null)
{
return null;
}
if (symbolInfo.symbolShapeType === "marker") {
// how to cast to MarkerSymbolInfo
return this.createMarkerStyle((MarkerSymbolInfo) symbolInfo);
}
}
createMarkerStyle(markerSymbol : MarkerSymbolInfo ): any {
throw "createMarkerStyle not implemented";
}
}
}
dimana SymbolInfo
kelas dasar. Bagaimana cara menangani typecasting dari SymbolInfo
ke MarkerSymbolInfo
dalam TypeScript atau Javascript?
casting
typescript
Klaus Nji
sumber
sumber
Ini disebut tipe pernyataan dalam TypeScript, dan sejak TypeScript 1.6, ada dua cara untuk mengekspresikan ini:
Kedua alternatif itu identik secara fungsional . Alasan untuk memperkenalkan
as
-syntax adalah bahwa sintaks aslinya bertentangan dengan JSX , lihat diskusi desain di sini .Jika Anda berada dalam posisi untuk memilih, gunakan saja sintaksis yang Anda rasa lebih nyaman. Saya pribadi lebih suka
as
-syntax karena rasanya lebih lancar membaca dan menulis.sumber
Dalam naskah, dimungkinkan untuk melakukan
instanceof
pemeriksaan dalam pernyataan if dan Anda akan memiliki akses ke variabel yang sama denganTyped
properti.Jadi katakanlah
MarkerSymbolInfo
memiliki properti yang disebutnyamarker
. Anda dapat melakukan hal berikut:Ini adalah trik kecil yang menyenangkan untuk mendapatkan instance dari variabel menggunakan variabel yang sama tanpa perlu menugaskannya kembali ke nama variabel yang berbeda.
Lihat dua sumber ini untuk informasi lebih lanjut:
Ketik instanceScript & instance JavaScript dari
sumber