I solved this problem by observing the rule that sounds like a variable name must be identical to the text argument value. This applies to all component classes.
ShieldComponent = ObjectInitializer.CreateAbstractDefaultSubobject<UStaticMeshComponent>(this, TEXT("ShieldComponent"));