Mecanografiado, fusionar tipos de objeto?
¿Es posible fusionar los accesorios de dos tipos de objetos genéricos? Tengo una función similar a esta:
function foo<A extends object, B extends object>(a: A, b: B) {
return Object.assign({}, a, b);
}
Me gustaría que el tipo sea todas las propiedades en A que no existen en B, y todas las propiedades en B.
merge({a: 42}, {b: "foo", a: "bar"});
da un tipo bastante extraño de{a: number} & {b: string, a: string}
, a
es una cadena sin embargo. El retorno real da el tipo correcto, pero no puedo entender cómo lo escribiría explícitamente.