TypeScript : 선택적 병합 유형
Sep 12 2020
유형 a과 유형 b이 있지만 유형의 양에 관계없이 작동합니다.
type a = {
first: number
}
type b = {
second: string
third: string
}
이러한 모든 유형을 선택적으로 병합하는 유형을 만들고 싶습니다. 따라서 second필드가있는 경우 third필드도 있어야 하지만 둘 다 가질 필요는 없습니다.
좋은:
const aa = {
first: 1,
second: "hi",
third: "hello"
}
const ab = {
first: 1
}
const ac = {
second: "hi",
third: "hello"
}
나쁜:
const bb = {
first: 1,
second: "hi"
}
그런 유형을 어떻게 정의 할 수 있습니까?
답변
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>
자세한 예제는 다음을 참조하십시오. Typescript 인터페이스는 속성에 대한 동시 발생 제약을 표현할 수 있습니다.
놀이터 링크
KaranKumar Sep 12 2020 at 05:01
그렇게 할 수 있을지 모르겠습니다. 이것이 내가 할 일입니다.
"|"를 사용할 수 있습니다. 변수를 정의하는 동안 연산자.
type a = {
first: number
}
type b = {
second: string
third: string
}
const test: a | b ={ first: 3, second: 'string'}