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

TypeScript中导入JSON对象如何排除'default'键?

解决TypeScript导入JSON模块时多余'default'键的问题

在你的场景中,问题出在导入方式上——使用import * as会把整个模块对象(包含默认导出的default键)导入,而不是直接获取JSON的实际内容。结合你已开启的esModuleInterop和resolveJsonModule配置,有两种简单的解决方式:

方法1:直接使用默认导入

直接导入模块的默认导出,就能拿到仅包含152个国家键的对象:

import countries from "all-countries-and-cities-json";

console.log(Object.keys(countries).length); // 返回152

方法2:从命名空间导入中提取default属性

如果因需求必须保留import * as的导入方式,可以手动提取default属性:

import * as countriesModule from "all-countries-and-cities-json";
const countries = countriesModule.default;

console.log(Object.keys(countries).length); // 返回152

原理说明

开启esModuleInterop后,TypeScript会自动将CommonJS格式的模块(包括JSON模块)适配为ES模块规范,其中JSON的内容会被作为模块的默认导出。所以用默认导入就能直接获取到纯净的国家数据对象,避免拿到包含default键的模块包装对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:54:16