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

React Native 中如何正确给 globalThis 声明类型?

你当前的声明写法不符合TypeScript扩展globalThis的规范,所以编辑器识别不到类型,按以下步骤修改即可:

第一步:修正类型声明文件

如果你的typings/global.d.ts没有顶层import/export(即全局声明文件),直接写以下内容即可:

// typings/global.d.ts
interface GlobalThis {
  app: {
    // 因为你用了Object.freeze冻结对象,加readonly更贴合实际运行时特性
    readonly isIos: boolean;
  }
}

如果你的声明文件需要引入其他类型,存在顶层import/export,则需要用declare global包裹声明:

// typings/global.d.ts
// 示例:需要引入其他类型时的写法
import type { PlatformOSType } from 'react-native';

declare global {
  interface GlobalThis {
    app: {
      readonly isIos: boolean;
      // 可按需扩展更多属性
      os: PlatformOSType;
    }
  }
}

// 加这行确保文件被识别为模块,避免TS报错
export {};

第二步:确认TS配置包含声明文件

检查你的tsconfig.json,确保include字段包含了自定义类型文件夹:

{
  "include": [
    "src/**/*",
    "typings/**/*" // 确保这里添加了你的typings目录
  ]
}

如果你配置了compilerOptions.typeRoots,也需要把自定义类型目录加进去:

{
  "compilerOptions": {
    "typeRoots": [
      "node_modules/@types",
      "./typings"
    ]
  }
}

第三步:重启TS服务

修改完成后,重启编辑器的TypeScript语言服务即可生效:

  • VS Code用户可以按Ctrl+Shift+P(Mac是Cmd+Shift+P),选择「TypeScript: Restart TS Server」

此时再悬浮在globalThis.app上就能看到正确类型,也会触发自动补全。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:04