Я пытался использовать vue-инжектор, но он компилируется с моими версиями Vue (2.6.10) и Typescript (3.4.5).
Я вижу очень мало других вариантов.
С чисто машинописной стороны я вижу такие вещи, как Inversify и TSyringe, которые хорошо выглядят, но не работают с Vue из коробки.
Это инверсия:
Argument of type typeof App' is not assignable to parameter of type 'VueClass<Vue>'.
Type 'typeof App' is not assignable to type 'VueConstructor<Vue>'.
Types of parameters 'authService' and 'options' are incompatible.
Type 'ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<string, any>>' is missing the following properties from type 'AuthService': app, scopes, login, logout, getAccount
export default class App extends Vue {
constructor(
@inject(AuthService) authService: AuthService
) {
super();
}
}
Полагаю, мне нужно создать класс с правильной подписью, но прежде чем я исчезну в этой кроличьей норе, кто-нибудь имеет опыт работы с Vue / Typescript / DI и может указать мне разумное решение?