vben
2021-01-11 c22de5c35b4781322c9ee17ad375ec0af2fe60a7
fix: useI18n type
2个文件已修改
26 ■■■■ 已修改文件
src/hooks/web/useI18n.ts 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/demo/feat/img-preview/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,
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] });