Typescript 경고 8: 교차로 작동하지 않는 유형 수준 평등
export type IsSame<T, U> = (<G>() => G extends T ? 1 : 2) extends <
G
>() => G extends U ? 1 : 2
? true
: false
type A = IsSame<{a:1, b:2},{a:1, b:2}> // true
// ^?
type B = IsSame<{ a:1, b:2 },{ a:1 } & { b:2 }> // false
// ^?
배경: Type Level Equality
playground
해결책:
export type IsSame<T, U> = (<G>() => G extends T ? 1 : 2) extends <
G
>() => G extends U ? 1 : 2
? true
: false
export type ReMap<T> = T extends Record<string, unknown>
? { [Key in keyof T]: T[Key] }
: T
type A = IsSame<{ a:1, b:2 }, { a:1, b:2 }> // true
// ^?
type B = IsSame<ReMap<{ a:1, b:2 }>, ReMap<{ a:1 } & { b:2 }>> // true
// ^?
playground
Remap
및 IsSame
결합
Reference
이 문제에 관하여(Typescript 경고 8: 교차로 작동하지 않는 유형 수준 평등), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tylim88/typescript-caveat-8-identity-check-not-working-with-intersection-3n7d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)