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
相关产品推荐
相关产品推荐

