Я использую Vue + ts и хочу реализовать SignalR в своем проекте. Я прочитал документацию @dreamonkey/vue-signalr о том, как использовать SignalR.
import { VueSignalR } from '@dreamonkey/vue-signalr';
import { HubConnectionBuilder } from '@microsoft/signalr';
import { createApp } from 'vue';
import App from './App.vue';
// Create your connection
// See https://docs.microsoft.com/en-us/javascript/api/@microsoft/signalr/hubconnectionbuilder
const connection = new HubConnectionBuilder()
.withUrl('http://localhost:5000/signalr')
.build();
**createApp(App).use(VueSignalR, { connection }).mount('#app');**
Я использовал этот код, но у меня возникла ошибка:
No overload matches this call.
Overload 1 of 2, '(plugin: Plugin<[options: VueSignalRConfig]>, options: VueSignalRConfig): App<Element>', gave the following error.
Argument of type '{ connection: HubConnection; }' is not assignable to parameter of type 'VueSignalRConfig'.
Type '{ connection: HubConnection; }' is missing the following properties from type 'VueSignalRConfig': autoOffInsideComponentScope, failFn
Overload 2 of 2, '(plugin: Plugin<[options: VueSignalRConfig]>, options: [options: VueSignalRConfig]): App<Element>', gave the following error.
Object literal may only specify known properties, and 'connection' does not exist in type '[options: VueSignalRConfig]'.ts(2769)
Я понятия не имею, как это исправить.






Тип VueSignalRConfig определяется следующим образом:
export interface VueSignalRConfig {
connection: HubConnection;
autoOffInsideComponentScope: boolean;
failFn: (error: any) => void;
}
Вышеупомянутый тип имеет 3 обязательных свойства, при условии, что только connection не соответствует его типу. Что вы можете сделать, так это 1) предоставить всем свойствам некоторые значения. 2) Привести их к желаемому типу или любому другому.
createApp(App).use(VueSignalR, {
connection,
autoOffInsideComponentScope: false,
failFn: e=> console.info(e) }).mount('#app')
или
createApp(App).use(VueSignalR, { connection } as VueSignalRConfig).mount('#app') // import VueSignalRConfig as type
Второй вариант может вызвать некоторые проблемы во время выполнения, поскольку я не знаю, как осуществляется доступ или используется неназначенные свойства.