Typescript 유형 별칭과 인터페이스를 혼합해야 하는 경우
11953 단어 tutorialwebdevtypescriptprogramming
number
유형을 undefined
로 변환하고 싶다고 가정해 보겠습니다.type a = { e: string; f: number; l: boolean }
type b = { e: string; f: number; l: boolean }
type c = { e: string; f: number; l: { e: string; f: number; l: boolean } }
type ABC = { a: a; b: b; c: c }
type ConvertNumberToUndefined<T extends Record<string, unknown>> = {
[K in keyof T]: T[K] extends Record<string, unknown>
? ConvertNumberToUndefined<T[K]>
: T[K] extends number
? undefined
: T[K]
}
type newABC = ConvertNumberToUndefined<ABC>
type a_f = newABC['a']['f'] // undefined
// ^?
type b_f = newABC['b']['f'] // undefined
// ^?
type c_f = newABC['c']['l']['f'] // undefined
// ^?
playground
이제 유형
b
을 그대로 유지하고 아무것도 변경하지 않으려고 한다고 가정해 보겠습니다. 이때 인터페이스가 유용합니다.type a = { e: string; f: number; l: boolean }
interface b { e: string; f: number; l: boolean }
type c = { e: string; f: number; l: { e: string; f: number; l: boolean } }
type ABC = { a: a; b: b; c: c }
type ConvertNumberToUndefined<T extends Record<string, unknown>> = {
[K in keyof T]: T[K] extends Record<string, unknown>
? ConvertNumberToUndefined<T[K]>
: T[K] extends number
? undefined
: T[K]
}
type newABC = ConvertNumberToUndefined<ABC>
type a_f = newABC['a']['f'] // undefined
// ^?
type b_f = newABC['b']['f'] // number
// ^?
type c_f = newABC['c']['l']['f'] // undefined
// ^?
playground
b
를 인터페이스로 변환하기만 하면 완료됩니다.이는 특별한 의미가 있는 데이터 유형(예: Date 및 Geopoint)을 처리할 때 유용합니다.
Reference
이 문제에 관하여(Typescript 유형 별칭과 인터페이스를 혼합해야 하는 경우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tylim88/typescript-when-you-should-mix-type-alias-and-interface-12m6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)