提交 c22de5c3 作者: vben

fix: useI18n type

上级 3509ebec
import { i18n } from '/@/locales/setupI18n'; 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) { function getKey(key: string) {
if (!namespace) { if (!namespace) {
return key; return key;
...@@ -22,9 +37,9 @@ export function useI18n(namespace?: string) { ...@@ -22,9 +37,9 @@ export function useI18n(namespace?: string) {
const { t, ...methods } = i18n.global; const { t, ...methods } = i18n.global;
const tFn: typeof t = (key: string, ...arg: any) => { const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => {
if (!key) return ''; if (!key) return '';
return t(getKey(key), ...(arg as Parameters<typeof t>)); return t(getKey(key), ...(arg as I18nTranslationRestParameters));
}; };
return { return {
...methods, ...methods,
......
<template> <template>
<PageWrapper title="图片预览示例"> <PageWrapper title="图片预览示例">
<ImagePreview :imageList="imgList" />
<Alert message="有预览图" type="info" /> <Alert message="有预览图" type="info" />
<div class="flex justify-center mt-4"> <div class="flex justify-center mt-4">
<img :src="img" v-for="img in imgList" :key="img" class="mr-2" @click="handleClick(img)" /> <img :src="img" v-for="img in imgList" :key="img" class="mr-2" @click="handleClick(img)" />
...@@ -11,7 +12,7 @@ ...@@ -11,7 +12,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { Alert } from 'ant-design-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'; import { PageWrapper } from '/@/components/Page';
const imgList: string[] = [ const imgList: string[] = [
...@@ -20,7 +21,7 @@ ...@@ -20,7 +21,7 @@
'https://picsum.photos/id/68/346/216', 'https://picsum.photos/id/68/346/216',
]; ];
export default defineComponent({ export default defineComponent({
components: { Alert, PageWrapper }, components: { Alert, PageWrapper, ImagePreview },
setup() { setup() {
function handleClick(img: string) { function handleClick(img: string) {
createImgPreview({ imageList: [img] }); createImgPreview({ imageList: [img] });
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论