如何声明局部类型扩充?

时间:2019-08-24 14:16:51

标签: typescript vue.js

Typescript给我以下错误:类型“ Vue”上不存在属性“名称”

我知道我可以这样做以添加全局属性:

declare module "vue/types/vue" {
    interface Vue {
        name: string;
    }
}

但是我只希望我的Tab组件具有该属性。 如何为带有属性名称的Tab组件创建本地接口?

Tab.vue

@Component
export default class Tab extends Vue {
    @Prop({required : true, type: String}) public name!: string;
}

Tabs.vue

@Component
export default class Tabs extends Vue {
  private mounted(): void {
    // tslint:disable-next-line: no-console
    this.$children.forEach((tab) => console.log(tab.name));
  }
}

好,我找到了解决方法:

export interface ITab extends Vue {
  name: string;
}

this.$children.forEach(tab=> {
  console.log((tab as ITab).name);
});

0 个答案:

没有答案