Avoid annotation-based dependency injection, make dependencies explicit and don't mix ioc configs with your app code.
Answer to: https://twitter.com/alexjoverm/status/895273462264213509
For starters, it's usualy unwise to couple your code to frameworks, and your are doing it in two ways here.
You are coupling your code to the framework by importing and using it in almost ALL the files. Now if you want to change the IoC library you will need to change all your files.
But let's imagine that the IoC library is smarter and you don't need to decorate your properties to autowire them, so you don't need to import the library everywhere. In practice, you are still coupled to this library (or other) beacause you can't initialize the class without using some IoC library or some other obscure techniques. Like for example in your tests, you are forced to use the IoC in your tests now, I don't like that much either.
This also allow you to half initialize the class by providing only some of the properties. Or doing some other really really weird stuff.
Take into account that not everything must be initialized by a container...
Another problem I see, and I can be wrong because I don't know much typescript, is that this is breaking encapsulation by forcing you to make the injected properties public even when they are supposed to be used internally only.
Then there is the explicity problem. I don't know how to call it, common kwnoledge/good practice/convention..., that a constructor receives all the things it needs to initialize the class. So in practice, if you have an empty constructor you are saying to the world that your class doesn't have dependencies. But that's a lie in this case, and once you realize it, to see what the real dependencies are you need to navigate inside the class to see what are the decorated properties, hopefully they are all together and it'll be fast... but it's faster, easier, and improves readability to see the dependencies from the outside. Ide or docs can help here.
This will probably drive you to have a class with 20 properties injected while if you used a constructor it will start smelling bad after you add ¿5? dependencies. Probably making you rethink your code and making you split it in a more cohesive way.
Now we can talk about the restrictions that Typescript + Vue impose you and look for the better bad way to do it :)
There is a lot of writing on these matters if you want to read further and from more reliable sources :) https://www.google.es/search?q=dependency+injection+constructor+vs+property&oq=constructor+dependency+injection+vs&aqs=chrome.2.69i57j0l5.9043j0j1&sourceid=chrome&ie=UTF-8