From c22de5c35b4781322c9ee17ad375ec0af2fe60a7 Mon Sep 17 00:00:00 2001 From: vben <anncwb@126.com> Date: 星期一, 11 一月 2021 21:05:16 +0800 Subject: [PATCH] fix: useI18n type --- src/hooks/web/useI18n.ts | 21 ++++++++++++++++++--- src/views/demo/feat/img-preview/index.vue | 5 +++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/hooks/web/useI18n.ts b/src/hooks/web/useI18n.ts index d035795..334208b 100644 --- a/src/hooks/web/useI18n.ts +++ b/src/hooks/web/useI18n.ts @@ -1,6 +1,21 @@ import { i18n } from '/@/locales/setupI18n'; -export function useI18n(namespace?: string) { +type I18nGlobalTranslation = { + (key: string): string; + (key: string, locale: string): string; + (key: string, locale: string, list: unknown[]): string; + (key: string, locale: string, named: Record<string, unknown>): string; + (key: string, list: unknown[]): string; + (key: string, named: Record<string, unknown>): string; +}; + +type I18nTranslationRestParameters = [string, any]; + +export function useI18n( + namespace?: string +): { + t: I18nGlobalTranslation; +} { function getKey(key: string) { if (!namespace) { return key; @@ -22,9 +37,9 @@ const { t, ...methods } = i18n.global; - const tFn: typeof t = (key: string, ...arg: any) => { + const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { if (!key) return ''; - return t(getKey(key), ...(arg as Parameters<typeof t>)); + return t(getKey(key), ...(arg as I18nTranslationRestParameters)); }; return { ...methods, diff --git a/src/views/demo/feat/img-preview/index.vue b/src/views/demo/feat/img-preview/index.vue index ca46211..9e8b7a1 100644 --- a/src/views/demo/feat/img-preview/index.vue +++ b/src/views/demo/feat/img-preview/index.vue @@ -1,5 +1,6 @@ <template> <PageWrapper title="鍥剧墖棰勮绀轰緥"> + <ImagePreview :imageList="imgList" /> <Alert message="鏈夐瑙堝浘" type="info" /> <div class="flex justify-center mt-4"> <img :src="img" v-for="img in imgList" :key="img" class="mr-2" @click="handleClick(img)" /> @@ -11,7 +12,7 @@ <script lang="ts"> import { defineComponent } from 'vue'; import { Alert } from 'ant-design-vue'; - import { createImgPreview } from '/@/components/Preview/index'; + import { createImgPreview, ImagePreview } from '/@/components/Preview/index'; import { PageWrapper } from '/@/components/Page'; const imgList: string[] = [ @@ -20,7 +21,7 @@ 'https://picsum.photos/id/68/346/216', ]; export default defineComponent({ - components: { Alert, PageWrapper }, + components: { Alert, PageWrapper, ImagePreview }, setup() { function handleClick(img: string) { createImgPreview({ imageList: [img] }); -- Gitblit v1.8.0