According to the data importer documentation, the general setting for "type" is supposed to act as the default setting for cases where there is no source value for the mapping to ca_objects.type_id.
In other words, the mapping to type_id is privileged over the general setting, but in cases where type_id cannot be set from source data, the type setting is supposed to be the default.
However, on the latest code it appears that if the type_id is not set from data, the importer just chokes on it and gives you the "no type specified" error, rather than fall back to generic type set in Settings.
Actually, I misinterpreted the documentation. If there is a mapping to type_id, then this is privileged in the sense that the type setting will be ignored, period.
So as as workaround I was able to use the skipIfExpression and skipIfEmpty options to set type_id properly in cases where there is no source data for type.