提交 c22de5c3 编写于 作者: V vben

fix: useI18n type

上级 3509ebec
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 @@ export function useI18n(namespace?: string) {
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,
......
<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] });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册