打字稿:如何扩展VueConfiguration?即如何扩展现有界面?

时间:2018-03-14 00:25:23

标签: typescript vue.js interface vuejs2

看起来似乎很容易,但我感到困惑。

假设我想将server对象添加到Vue.config。 这是Vue的打字稿定义 - https://github.com/vuejs/vue/blob/dev/types/vue.d.ts#L121。所以我们需要扩展VueConfiguration接口 - https://github.com/vuejs/vue/blob/dev/types/vue.d.ts#L67

我尝试创建index.d.ts文件:

/// <reference path="../node_modules/vue/types/vue.d.ts" />

export interface VueConfiguration {
    server: {
        user: string;
    }
}
在<{1}}目录中的

,这没有帮助。

尝试将此代码添加到main.ts文件中:

src/

任何方式,当我这样做时:

declare interface VueConfiguration { server: { blockchain: string; }; };

我收到错误'VueConfiguration'

类型中不存在属性'server'

那我做错了什么?我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

我不知道修改现有界面的方法。相反,您应该创建一个扩展旧接口的新接口,然后在对象上使用类型断言让TS编译器了解这些附加属性。

export interface MyVueConfiguration extends VueConfiguration {
    server: {
        user: string;
    }
}

...

(Vue.config as MyVueConfiguration).server.user = 'http://127.0.0.1:8082'