You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native项目中i18n-js遇TypeScript报错:Property 't'不存在

解决React Native + TypeScript中i18n-js的t方法类型错误问题

1. 检查i18n实例的导出方式

确保你在i18n.js(建议改为i18n.ts适配TS项目)中导出的是配置后的i18n实例本身,而非模块整体。示例代码:

// i18n.ts
import i18n from 'i18n-js';
import en from './locales/en.json';
import es from './locales/es.json';

i18n.translations = { en, es };
i18n.defaultLocale = 'en';
i18n.locale = 'en';
i18n.fallbacks = true;

// 导出配置好的实例
export default i18n;

如果之前用export { i18n },则导入时要对应使用import { i18n } from './i18n',保证拿到的是已配置的实例,而非未初始化的模块类型。

2. 为翻译文件添加类型声明

TypeScript无法自动识别JSON翻译文件的结构,需要手动定义或自动生成类型:

方法一:手动定义翻译类型

在项目的types/i18n.d.ts文件中添加:

import 'i18n-js';

declare module 'i18n-js' {
  interface Translations {
    login: {
      accountCreatedTitle: string;
      // 补充其他login模块的翻译键
    };
    // 补充其他翻译模块的结构
  }
}

这样TS就能识别t方法的合法参数,同时正确推断i18n实例的类型。

方法二:自动生成类型(更高效)

先安装@types/i18n-js依赖:

npm install @types/i18n-js --save-dev

然后在tsconfig.json中开启JSON模块解析:

{
  "compilerOptions": {
    "resolveJsonModule": true,
    "esModuleInterop": true,
    // 其他原有配置
  }
}

3. 确认导入路径正确性

检查Auth.tsx的导入语句,确保指向自己配置的i18n.ts/i18n.js文件,而非i18n-js库本身:

// 正确:导入自定义配置的实例
import i18n from '../path/to/i18n';

// 错误:直接导入未配置的库模块
import i18n from 'i18n-js';

4. 重启TypeScript服务

TS缓存可能导致类型不更新,按Ctrl+Shift+P(Windows/macOS),输入TypeScript: Restart TS Server重启服务,或重新编译项目让类型声明生效。


内容的提问来源于stack exchange,提问作者FabioDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:50:29