Typescript 유니온 키 및 흔하지 않은 키를 선택 사항으로 만들기
type A = {name: string}
type B = {name: number}
type C = {name: string , age:number}
type D = {name: string , age:string}
type E = {name: string , address:string}
type Prettify<T extends Record<string, unknown>> = { [K in keyof T]: T[K] }
type UnionKeysAndMakeUncommonKeysOptional<
T extends Record<string, unknown>[],
ACC extends Record<string, unknown>={},
UncommonKeyACC extends string = never
> = T extends []
? Prettify<Omit<ACC, UncommonKeyACC> & Partial<Pick<ACC, UncommonKeyACC>>>
: T extends [infer R, ...infer S extends Record<string, unknown>[]]
? UnionKeysAndMakeUncommonKeysOptional<
S,
{ [K in keyof R | keyof ACC]: R[K & keyof R] | ACC[K & keyof ACC] },
Exclude<keyof ACC | keyof R, keyof ACC & keyof R> & string
>
: never
type result = UnionKeysAndMakeUncommonKeysOptional<[A,B,C,D,E]>
// {
// name: string | number;
// age?: string | number;
// address?: string;
// }
playground
TS 4.7이 필요하고
exactOptionalPropertyTypes
를 true로 설정
Reference
이 문제에 관하여(Typescript 유니온 키 및 흔하지 않은 키를 선택 사항으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tylim88/typescript-union-keys-and-make-uncommon-keys-optional-3n96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)