Typescript i18next 不满足约束 'string |模板字符串数组 NextJS

2023-12-23

我正在尝试输入要使用 i18next 进行翻译的对象数组,但变量 navItems 中出现以下消息,我在其中声明 i18next 然后迭代该数组Type 'NavItemProps[]' does not satisfy the constraint 'string | TemplateStringsArray'. Property 'raw' is missing in type 'NavItemProps[]' but required in type 'TemplateStringsArray'

以及地图内的属性“map”message does not exist on type 'string | object | (string | object)[]'. Property 'map' does not exist on type 'string'

我用它作为通过此链接输入 i18next 的参考,但没有成功i18next:在 TypeScript 中映射对象数组 https://stackoverflow.com/questions/63625749/i18next-map-an-array-of-objects-in-typescript

成分

const DesktopNav = ({hasBackground}: DesktopNavProps) => {
  const {t} = useTranslation('navbar')
  const linkColor = useColorModeValue(
    hasBackground ? 'black' : 'white',
    'gray.200'
  )
  const linkHoverColor = useColorModeValue('gray.400', 'white')
  const popoverContentBgColor = useColorModeValue('white', 'gray.800')

  const navItems = t<NavItemProps[]>('menu', {returnObjects: true})

  return (
    <C.List display={'flex'} alignItems={'center'}>
      {navItems?.map((item: NavItemProps, index: number) => (
        <C.ListItem key={index}>
          <C.Popover trigger={'hover'} placement={'bottom-start'}>
            <C.PopoverTrigger>
              <C.Link
                p={3}
                href={item.href ?? '#'}
                fontWeight={500}
                color={linkColor}
                _hover={{
                  textDecoration: 'none',
                  color: linkHoverColor,
                }}
              >
                {item.label}
              </C.Link>
            </C.PopoverTrigger>
          </C.Popover>
        </C.ListItem>
      ))}
    </C.List>
  )
}

界面

interface NavItemProps {
  label: string
  href?: string
  subLabel?: string
  children?: Array<NavItemProps>
}

Json 文件翻译

{
  "menu": [
    {
      "label": "jobs",
      "href": "/"
    },
    {
      "label": "about",
      "href": "/about"
    },
     {
      "label": "Blog",
      "href": "/blog"
    },
    {
      "label": "contact",
      "href": "/contact"
    }
  ]
}

我无法确切地说出这种情况发生的时间(在哪个版本中),但显然泛型的顺序t与您引用的链接相比,react-i18next 类型定义中的函数已更改。当前的定义是:

<
    TKeys extends TFuncKey<N> | TemplateStringsArray extends infer A ? A : never,
    TDefaultResult extends TFunctionResult = string,
    TInterpolationMap extends object = StringMap
  >(
    key: TKeys | TKeys[],
    options?: TOptions<TInterpolationMap> | string,
   ): TFuncReturn<N, TKeys, TDefaultResult>;

如您所见,第一种类型指的是键,第二种类型指的是结果。所以我想你可以这样使用它:

const navItems = t<string, NavItemProps[]>('menu', { returnObjects: true });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript i18next 不满足约束 'string |模板字符串数组 NextJS 的相关文章

随机推荐

  • 交替表行颜色,但有 2 行数据

    我已经为斑马条纹设置了表格 但是如何实现使行颜色交替为 2 行而不是单行 我的数据标记如下所示 tr td task TaskNum td td task RepiarTime td td Priority Club td td SD td
  • 在 Erlang 中将列表拆分为相同大小的块

    我想分割 1 2 3 4 5 6 7 8 into 1 2 3 4 5 6 7 8 它通常适用于 lists sublist List X 2 X lt lists seq 1 length List 2 但这样确实很慢 在我的上网本上 1
  • pandas dataframe 删除频率较低的行

    删除具有低频值列的所有行的最佳实践是什么 数据框 IN foo bar poo 1 a A 2 a A 3 a B 4 b B 5 b A 6 b A 7 c C 8 d B 9 e B 示例1 删除 poo 列中频率值小于 3 的所有行
  • 实际测试我构建的应用程序(Flask,Python)

    如果我构建了一个应用程序 测试实际应用程序的协议是什么 我只是了解测试 并且对扩展进行测试 在其中构建 shell 应用程序 然后测试您的扩展 对我来说很有意义 但如果我想测试我正在构建的实际应用程序的某些部分 则没有意义 我想知道是否有人
  • Laravel 5:自定义 abort() 消息

    使用 Laravel 5 我想发送自定义abort 信息 例如 如果用户没有执行某项操作所需的权限 我想abort 401 User can t perform this actions 目前 当我这样做时 响应文本是 HTML 页面 而不
  • 使用 Javascript 验证单选按钮

    我已经梳理了这里的大量页面 但仍然无法让我的显式验证器工作 基本上 当单击提交按钮时 我希望脚本验证无线电是否已检查 如果检查后什么也不做 如果没有检查 我希望它发布一条警报消息 我的 html 大致如下所示
  • SignalR + Win RT(Windows 8.1) + 使用未签名的证书不起作用[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 经过 4 个多小时的搜索 使 Windows RT SignalR 使用自签名证书工作 找到了 所以我在这里分享一个解决方案 您收到错误 底
  • 如何发送 SOAP 请求?

    我是 SOAP 和 xml 的新手 我读了很多教程 但似乎没有什么是足够清楚的 我有点困惑 到底如何发送 SOAP 请求 我尝试执行此操作的方法是将 SOAP 请求 如下所示 保存为 test Request xml POST Mobile
  • 如何在node.js中逐块进行压缩?

    我正在以块的形式获取压缩网页的内容 并希望在收到每个内容后立即对其进行解压缩 因此我正在尝试执行以下操作 为了可读性而将内容剥离 var decompress function string callback zlib gunzip str
  • 使用宏刷新 Excel 工作簿中的所有数据透视表

    我有一本包含 20 个不同数据透视表的工作簿 有没有简单的方法可以找到所有数据透视表并在 VBA 中刷新它们 Yes ThisWorkbook RefreshAll 或者 如果您的 Excel 版本足够旧 Dim Sheet as Work
  • 使用 OAuth 从 Twitter 获取名字/姓氏/电子邮件

    我专门使用omniauth 来允许通过facebook google twitter 登录我的网站 我存储名字 姓氏和电子邮件 但是 当我从 oauth 提出 twitter auth 哈希时 我只能在 auth 哈希中获得昵称 名称 位置
  • iPhone Web 应用程序的日期选择器

    显示基于 iPhone 的 Web 应用程序的日期选择器的最佳方式是什么 我们可以在 Web 应用程序中显示类似 iPhone 本机日期选择器的内容吗 最简单的方法 可以说是最好的方法 是使用 safari 的内置日期选择器作为输入框 使用
  • 使用 Google Apps 脚本更新 Google 文档中的嵌入图表

    太长了 如何使用文档中的脚本编辑器更新文档中嵌入的表格图表 我知道有一个脚本可以为 Google 幻灯片执行此操作 但我正在尝试在 Google 文档中执行此操作 但找不到任何相关文档 https developers google com
  • 尝试连接到 localhost:5000 Firebase 时出现“无法获取/”

    我正在尝试让 Firebase 上的本地主机服务器正常工作 但我继续在浏览器中收到以下消息 无法获取 我看了一下控制台 它只说 http 本地主机 5000 http localhost 5000 404 未找到 我尝试使用 firebas
  • 外部 swf 卸载后声音继续播放

    我有一个 Flash 应用程序 某种加载外部 SWF 视频播放器的播放列表 我没有对该外部文件的代码访问权限 因此用户可以观看视频或跳到另一个视频 当用户切换到另一个视频时 将加载新的 SWF 文件 问题 如果用户没有看完视频并跳到下一个
  • onClick 里面有两个参数

    我试图在 ReactJs 中的 onClick 上传递两个事件操作 基本上我想要类似的东西 div prop2 value2 this continue project gt 我尝试了 1000 种不同的语法编写方式 div prop2 v
  • 如何将 Python 3 和 Django 与 Apache 结合使用?

    我的目标是使用 Apache 设置 Python 3 我最大的问题实际上是获取 mod python so 在我的一生中 我只找到一个可以下载它的网站 http www modpython org 而我得到的是一堆构建和安装文件 我找不到解
  • Django:在 queryset.update 上发出信号

    如果您使用的是 Django 会发送 pre post delete 信号queryset delete 方法 但不应该也发送 pre post save onqueryset update 也许应该如此 但事实并非如此 update 不调
  • 您在 Netbeans 中创建了哪些有用的宏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Typescript i18next 不满足约束 'string |模板字符串数组 NextJS

    我正在尝试输入要使用 i18next 进行翻译的对象数组 但变量 navItems 中出现以下消息 我在其中声明 i18next 然后迭代该数组Type NavItemProps does not satisfy the constrain