filter 関数の定義
よく使う filter 関数の円表示、日付 フォーマット、改行コードを br に変換を買いてみ
filters.ts
import Vue from 'vue';
import dayjs from 'dayjs';
export const currencyJPY = (value: number): string => {
return `¥${value.toLocaleString()}`;
};
export const formatDate = (date: string): string => {
return dayjs(date).format('YYYY年MM月DD日');
};
export const nl2br = (text: string): string => {
if (!text) {
return '';
}
text = text.replace(/\r\n/g, '<br>');
text = text.replace(/(\n|\r)/g, '<br>');
return text;
};
Vue.prototype.$filters = {
currencyJPY,
formatDate,
nl2br
};
型定義
vue-filters-type.d.ts
import { currencyJPY, formatDate, nl2br } from '@/plugins/filters';
interface Filters {
currencyJPY: typeof currencyJPY;
formatUnixDate: typeof formatDate;
nl2br: typeof nl2br;
}
declare module 'vue/types/vue' {
interface Vue {
$filters: Filters;
}
}
使用する側は ↓ みたいで型チェックも OK!
<template>
<div>
価格: {{ $filters.currencyJPY(price) }}
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
data() {
return {
price: 1000
}
}
});
</script>