Bagaimana untuk memahami persimpangan TypeScript melalui keyof
P粉451614834
2023-09-05 22:37:33
<p><pre class="brush:php;toolbar:false;">interface Person {
nama: rentetan;
}
antara muka Jangka hayat {
tarikh lahir;
kematian: Tarikh;
}
jenis PersonSpan = Orang &
jenis K = keyof PersonSpan; // jenis K = "nama"
biarkan prop: K = "nama"; // ok
let obj: PersonSpan = { // kompilasi ralat, hilang sifat kelahiran dan kematian
nama: "John Smith"
}</pre>
<p>Jika saya ingin memahami jenis persimpangan melalui <kod>kunci</kod>: </p>
<p>Kunci<kod>{ nama: "John Smith" }</kod> bagi contoh objek ini ialah <kod>nama</kod>, yang sepadan dengan <kod>kunci PersonSpan</kod> , iaitu <kod> "nama" |. "kelahiran" |. "Kelahiran" |. "Kematian" = "Nama";
<p>Jadi, selagi objek mempunyai salah satu daripada tiga sifat ini, ia sepatutnya sah, mengapa ia masih perlu mempunyai semua sifat yang boleh diserahkan kepada <kod>PersonSpan</code>? </p>
Dalam TypeScript, apabila anda mentakrifkan jenis menggunakan persilangan & dua atau lebih jenis, jenis yang terhasil akan mempunyai semua sifat setiap jenis persimpangan. Dalam kes ini, PersonSpan ditakrifkan sebagai persilangan Person dan Jangka Hayat, jadi objek jenis PersonSpan mesti mempunyai semua sifat Person dan Jangka Hayat. Walaupun keyof PersonSpan menghasilkan "nama" |. "kelahiran" |. set, anda boleh mengakses sifat ini menggunakan kekunci "nama" pada objek jenis PersonSpan, "kelahiran" atau "kematian" yang mungkin juga jenis Separa yang anda cari, yang menjadikan semua prop sebagai pilihan