typescript - 有没有一种方法可以放弃我所做的类型定义的副本,使它们在全局范围内可用?

标签 typescript vue.js

所以我对 typescript 很陌生,对它知之甚少。但经过大量的痛苦和努力,我能够让它与 VueJS 一起工作。

Here's the template that I built.

我迫切想要并且花了我很长时间才完成的一件事就是让它不需要在每个奇怪的组件中导入 Vue 或任何类型的装饰器,如 Component我做的。正如您在 this particular vue file 中看到的那样我正在扩展 Vue 并使用许多不同类型的装饰器,但我不必导入它们。这对我来说真是太好看了。

但是,我实现它的方式并不是那么漂亮。我基本上只是将所有这些东西的类型定义复制到 this folder 中。 .这很糟糕,因为只要这些包中的任何一个更改了它们的类型定义,我的模板就会开始崩溃。

但是,我发现如果我尝试简单地导入这些类型定义(我尝试了多种方法),那么它们并不是在我所有的 .vue 文件中全局可用。

我想知道,是否可以简单地将这些类型定义导入一个地方,并使它们可用于我所有的 .vue 文件?如果是这样,谁能告诉我该怎么做?如果这成功了,我会很高兴。我真的花了好几天的时间才让它发挥作用。

最佳答案

您可以在 global 范围内声明您的类型:

import Vue from 'vue'
import Component from 'vue-class-component'

declare global {
  const VueComponent: typeof Component
  class VueClass extends Vue {}
}

// From another file
@VueComponent({
  props: {
    propMessage: String
  }
})
export default class App extends VueClass {

}

关于typescript - 有没有一种方法可以放弃我所做的类型定义的副本,使它们在全局范围内可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745174/

相关文章:

typescript - 从包中修改命名空间

javascript - vuex 中 { dispatch, commit } 的类型是什么?

vue.js - VueJS - 导出中排序函数的标准做法?

reactjs - 如何干净利落地将 React 组件传递给组件层次结构深处的另一个组件?

javascript - 如何在箭头函数 HOC 中设置 Component displayName

mysql - 如何在 Strapi v4 Typescript 上进行原始 sql 查询

asp.net-mvc - NullInjectorError : No provider for HttpClient! Angular 5

javascript - 电子邮件的表单验证在 Vuejs 中不起作用

javascript - 如何在使用 Vue JS 单击复选框时显示正确的作业名称?

javascript - 如何使用 TypeScript 最好地描述这段代码?