TypeScript: Jenis gabungan opsional
Sep 12 2020
Saya memiliki tipe adan tipe b, tetapi ini harus bekerja dengan tipe berapa pun.
type a = {
first: number
}
type b = {
second: string
third: string
}
Saya ingin membuat tipe yang secara opsional menggabungkan semua tipe itu, jadi jika itu akan memiliki secondbidang, itu harus memiliki thirdbidang juga, tetapi tidak harus memiliki keduanya:
Baik:
const aa = {
first: 1,
second: "hi",
third: "hello"
}
const ab = {
first: 1
}
const ac = {
second: "hi",
third: "hello"
}
Buruk:
const bb = {
first: 1,
second: "hi"
}
Bagaimana saya bisa mendefinisikan tipe seperti itu?
Jawaban
6 Lesiak Sep 12 2020 at 05:15
type None<T> = {[K in keyof T]?: never}
type EitherOrBoth<T1, T2> = T1 & None<T2> | T2 & None<T1> | T1 & T2
type abcombined = EitherOrBoth<a,b>
Lihat contoh yang lebih dielaborasi di: Can Typecript Interfaces mengungkapkan kendala kemunculan bersama untuk properti
Tautan taman bermain
KaranKumar Sep 12 2020 at 05:01
Saya tidak yakin apakah Anda bisa melakukan itu. Inilah yang akan saya lakukan:
Anda bisa menggunakan "|" operator saat mendefinisikan variabel.
type a = {
first: number
}
type b = {
second: string
third: string
}
const test: a | b ={ first: 3, second: 'string'}
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'