我目前正在尝试在Vue项目中实现TypeScript。到目前为止,一切都很好。但是现在我正在尝试通过外部ts.file来实现Vue.filters
在当前的js设置中,此工作可以很好地完成,但是在ts文件中导出过滤器功能会导致错误。
JS解决方案:
// utils.js
export function currency (value, digits) {
let n = value
digits = isNaN(digits = Math.abs(digits)) ? 2 : digits
const s = n < 0 ? '-' : ''
const i = String(parseInt(n = Math.abs(Number(n) ||
0).toFixed(digits)))
let j = (j = i.length) > 3 ? j % 3 : 0
return '€ ' + s + (j ? i.substr(0, j) + '.' : '') +
i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + '.') + (digits ?
',' + Math.abs(n - i).toFixed(digits).slice(2) : '')
}
// main.js
import * as filters from '@/utils/filters'
Object.keys(filters).forEach(k => Vue.filter(k, filters[k]))
这有效,现在当我尝试在TS中做同样的事情时……
// utils.ts
export class Filters {
currency(value: any, digits: any) {
let n = value
digits = isNaN(digits = Math.abs(digits)) ? 2 : digits
const s = n < 0 ? '-' : ''
const i = String(parseInt(n = Math.abs(Number(n) ||
0).toFixed(digits)))
let j = (j = i.length) > 3 ? j % 3 : 0
return '€ ' + s + (j ? i.substr(0, j) + '.' : '') +
i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + '.') + (digits
? ',' + Math.abs(n - i).toFixed(digits).slice(2) : '')
}
}
如果有人可以指出我应该如何构建utils.ts文件,那将非常棒。我已经研究了两天,没有任何结果。