TypeScript: Các kiểu hợp nhất tùy chọn
Sep 12 2020
Tôi có loại avà loại b, nhưng điều này sẽ hoạt động với bất kỳ số lượng loại nào.
type a = {
first: number
}
type b = {
second: string
third: string
}
Tôi muốn tạo một kiểu kết hợp tất cả các kiểu đó theo tùy chọn, vì vậy nếu nó có secondtrường, thì nó cũng phải có thirdtrường, nhưng không nhất thiết phải có cả hai:
Tốt:
const aa = {
first: 1,
second: "hi",
third: "hello"
}
const ab = {
first: 1
}
const ac = {
second: "hi",
third: "hello"
}
Xấu:
const bb = {
first: 1,
second: "hi"
}
Làm thế nào tôi có thể xác định một loại như vậy?
Trả lời
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>
Xem thêm ví dụ chi tiết tại: Giao diện Typecript có thể diễn đạt các ràng buộc đồng xuất hiện cho các thuộc tính không
Liên kết sân chơi
KaranKumar Sep 12 2020 at 05:01
Tôi không chắc liệu bạn có thể làm điều đó. Đây là những gì tôi sẽ làm:
Bạn có thể sử dụng "|" toán tử trong khi xác định một biến.
type a = {
first: number
}
type b = {
second: string
third: string
}
const test: a | b ={ first: 3, second: 'string'}