Microsoft/TypeScript
Ver no GitHubIntersection with a mapped type breaks bypassing private assignability.
Open
#61.743 aberto em 21 de mai. de 2025
Domain: IntersectionHelp WantedPossible Improvement
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
🔎 Search Terms
private assignability intersection mapped type
🕗 Version & Regression Information
Latest as of today.
⏯ Playground Link
💻 Code
Given
declare class X {
private a: number;
b: string;
}
You're allowed to do:
type Y = { a: number } & { b: string };
declare let y: Y;
let x: X = y as Y & X;
But fails with:
type Z = Pick<{ a: number }, 'a'> & { b: string };
declare let z: Z;
let x: X = z as Z & X;
🙁 Actual behavior
X bypasses private assignability, but the identical type Y errors.
🙂 Expected behavior
Either neither type is allowed to bypass private assignability, or both types are, since they're identical.
Additional information about the issue
No response