Add support for literal type subtraction · Issue #12215 · microsoft/TypeScript (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

@cvle

Description

@cvle

Now we have Mapped Types and keyof, we could add a subtraction operator that only works on literal types:

type Omit<T, K extends keyof T> = { [P in keyof T - K]: T[P]; };

type Overwrite<T, K> = K & { [P in keyof T - keyof K]: T[P]; };

type Item1 = { a: string, b: number, c: boolean }; type Item2 = { a: number };

type T1 = Omit<Item1, "a"> // { b: number, c: boolean }; type T2 = Overwrite<Item1, Item2> // { a: number, b: number, c: boolean };