It doesn't have to be. This is not a problem of component based style but of the strict programming languages:
E.g. you could write similar code with lua:
local go = GameObject:new()
go:attach(Transform:new())
go:attach(Character:new())
go:attach(Animation:new())
-- same as go.transform.position
print(go.position)
-- same as go.animation:playAnimation("walk")
go:playAnimation("walk")
So you see this is just a matter of language