如何使用对象解构在 TypeScript 中导入 JSON?

Posted

技术标签:

【中文标题】如何使用对象解构在 TypeScript 中导入 JSON?【英文标题】:How to import JSON in TypeScript with object destructuring? 【发布时间】:2019-07-21 08:26:04 【问题描述】:

在一个 Vue 项目中,我试图在 TypeScript(.vue 文件)中导入一个带有对象解构的 JSON 模块:

import  logo  from '@src/config/branding.json'

但我在 VSCode 中收到错误:Module ''*.json'' has no exported member 'logo'.

如何通过对象解构导入 JSON 对象?

请注意,这可以正常工作:

import branding from '@src/config/branding.json' // branding.logo to get logo

我声明了 JSON 模块:

declare module '*.json' 
    const value: any
    export default value

branding.json:


  "logo": "https://apiendpointurl.com/logo.svg",

tsconfig 有"resolveJsonModule": true, "esModuleInterop": true

【问题讨论】:

【参考方案1】:

如果您使用declare module '*.json' 版本,您指定所有以*.json 结尾的文件都将具有默认的any 导出。

您可以使用 tsconfig 中的"resolveJsonModule": true 选项告诉编译器您希望它解析 json 模块。如果您对磁盘上找到的所有json 文件执行此操作,则declare module '*.json' 将能够以完整类型导入它们。

【讨论】:

我在 tsconfig 中有"resolveJsonModule": true, "esModuleInterop": true。我开始认为这是 Vetur 扩展的问题。在 .ts 文件中对其进行测试,导入与对象解构一起工作,没有任何问题。

以上是关于如何使用对象解构在 TypeScript 中导入 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Typescript 文件中导入 Svelte 组件?

如何在 JavaScript 和 TypeScript 中导入/导出?

如何在 TypeScript 中导入 package.json?

如何在 React 应用程序的 typescript 文件中导入 js 模块(使用绝对路径)?

如何在 TypeScript 中导入 KnockOut 4?

如何在没有 <reference> 的情况下在 TypeScript 中导入带有“Typings”的模块?