Value declared with a {type: String} but no default value behave like they have a default value

Consider the following values :

static values = {
  foo: {type: String},
  bar: String
}

If both values are un-set, the following will happen

this.hasFooValue // true
this.hasBarValue // false

Looks like it comes from here :

stimulus/src/core/value_properties.ts

Line 55 in e6f1887

return this.data.has(key) || definition.hasCustomDefaultValue

stimulus/src/core/value_properties.ts

Lines 213 to 215 in e6f1887

get hasCustomDefaultValue() {
return parseValueTypeDefault(typeDefinition) !== undefined
},

This is beyond my knowledge but it looks like there is a mixup about what is passed to parseValueTypeDefault