使用typescript在原型上声明类型

使用typescript在原型上声明类型,typescript,prototype,Typescript,Prototype,我正在使用Vue,并已将一个对象添加到Vue.prototype: Vue.prototype.$rpc = ...; 我在rpc.d.ts中声明: import MyRpc from "./MyRpc"; declare module "vue/types/vue" { interface Vue { $rpc?: MyRpc; } } 然后我在另一个文件中使用它: import "./rpc"; ... if (Vue.prototype.$rpc !== unde

我正在使用Vue,并已将一个对象添加到
Vue.prototype

Vue.prototype.$rpc = ...;
我在
rpc.d.ts
中声明:

import MyRpc from "./MyRpc";

declare module "vue/types/vue" {
  interface Vue {
    $rpc?: MyRpc;
  }
}
然后我在另一个文件中使用它:

import "./rpc";

...

if (Vue.prototype.$rpc !== undefined) {
  Vue.prototype.$rpc.foo();
}

但是,
Vue.prototype
Vue.prototype.$rpc
的类型都是
any
。为什么Typescript不知道我的类型?如果我这样做:

new Vue().$rpc
然后它被正确地输入。但是我不想创建一个对象来访问
$rpc


是的,我意识到这或多或少相当于一个普通的全局变量,我可能最终会切换到它。

如果这个问题是特定于Vue的,您可能需要标记它。否则,您可能希望使这里的代码成为一个没有外部依赖关系的代码。祝你好运这不是VuueTimes。那么请考虑将上面的代码编辑成没有这种依赖性的东西。理想情况下,有人可以将示例代码放入IDE中,并立即重现您的问题,以便他们可以提出建议。