如何使用打字稿绑定Vue过滤器?

pul*_*ies 9 typescript vue.js

如何使用TypeScript绑定Vue过滤器?纯js相当简单,但是我遇到了将它转换为TypeScript的问题.

以下代码和编译错误如下:

app.ts

import * as Vue from 'vue'
...
import * as filters from './util/filters'

// register global utility filters.
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key]);
})
Run Code Online (Sandbox Code Playgroud)

UTIL/filters.ts

export function host (url: string) {
  ...
}

export function timeAgo (time: any) {
  ....
}
Run Code Online (Sandbox Code Playgroud)

编译错误

错误TS7017:元素隐式具有"任何"类型,因为类型"typeof ..."没有索引签名.

编译错误是为了

小智 18

我正在使用一个名为vue-property-decorator的库,你可以在其中执行以下操作:

import { Component, Vue } from 'vue-property-decorator'

@Component({
  name: 'ComponentName',
  filters: {
    filterName(value: any) {
      return 'Hello filter'
    }
  }
})
export default class ComponentName extends Vue {
  textToFormat = 'Hello world'
}
Run Code Online (Sandbox Code Playgroud)

然后应用过滤器:

<p>{{ textToFormat | filterName }}</p>
Run Code Online (Sandbox Code Playgroud)

快乐的编码!

  • 那么您需要在每个组件中手动注入并重复您的代码吗? (4认同)
  • 问题不是关于如何在全球范围内实现它,而是关于上面的类组件样式的代码。您是否尝试过将所有过滤器包含在 main.ts 中?我遇到了类型问题:/sf/ask/4037102051/ (3认同)
  • @Arajay,我的意思是所有组件的全局导入,而不是一一导入。 (3认同)