то решить ?
type Foo = {
type?: string;
}
type Bar = {
type?: string;
}
type Problem = {
foo: Foo;
bar: Bar;
baz: number;
}
type Check<T> = {
[K in keyof T]: T[K] extends Foo ? string : T[K] extends Bar ? number : never
}
type Result = Check<Problem>
Хочется чтобы Result имел тип { foo: string; bar: number; baz: never }
я если честно вообще смысл не уловил что вы хотите от Check ?
Да, если типы структурно одинаковые, различать их поможет только брендирование; например: play.
Попробуй паттерн type branding
Обсуждают сегодня