Widget select option not saving

This line $type = isset( $instance['type'] ); will set $type to either true or false which never matches the string you check for later:

foreach ($types as $option) {
   echo '<option value="' . $option . '" id="' . $option . '"', $type == $option ? ' selected="selected"' : '', '>', $option, '</option>';
}

You need to remove that $type = isset( $instance['type'] ); line and use $instance['type'] in the option.

You should also consider using selected().