我如何访问vue.js组件中设置函数内的套接字实例
我用vue-3-socket.io
在我的main.js
import VueSocketIO from 'vue-3-socket.io'
import SocketIO from 'socket.io-client'
Vue.use(new VueSocketIO({
debug: true,
connection: SocketIO('http://metinseylan.com:1992', {}),
vuex: {
store,
actionPrefix: "SOCKET_",
mutationPrefix: "SOCKET_"
}
})
);
Run Code Online (Sandbox Code Playgroud) 我想建立这样一个功能:
const recursionProxy = <T extends object>(subject: T) =>
new Proxy(subject, {
get(target, key: keyof T) {
const nestedSubject = target[key];
if (typeof nestedSubject === "object") {
return recursionProxy(nestedSubject);
}
return nestedSubject ?? target._ ?? "Message not set";
},
});
Run Code Online (Sandbox Code Playgroud)
但在该行下面recursionProxy(nestedSubject);有一个错误说
[i] Argument of type 'T[keyof T]' is not assignable to parameter of type 'object'.
Run Code Online (Sandbox Code Playgroud)
为什么打字稿不考虑 if 语句,在 if 语句内部nestedSubject是对象类型
在Vue.js源代码(packages/reactivity/src/effects.ts)中,我发现了这一点:
export interface ReactiveEffectRunner<T = any> {
(): T
effect: ReactiveEffect
}
Run Code Online (Sandbox Code Playgroud)
()代码中的意思是什么?