typescript merge multiple types