首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态导入json文件

问动态导入json文件
EN

Stack Overflow用户
提问于 2018-01-22 01:47:44
回答 1查看 2.6K关注 0票数 5

我曾经像这样加载一个json文件:

代码语言:javascript
复制
import faq from './faq.json'

interface FAQ {
   title: string
   body: string
}

interface SiteConfig {
    title: string
    faqs: FAQ[]
}

sites: {[key: string]: SiteConfig} = {
    siteA: {
        title: 'xx',
        faqs: faq
    }
}

现在我想使用动态导入:

代码语言:javascript
复制
interface FAQ {
   title: string
   body: string
}

interface SiteConfig {
    title: string
    faqs: () => FAQ[]
}

sites: {[key: string]: SiteConfig} = {
    siteA: {
        title: 'xx',
        faqs: (): Promise<FAQ[]> => import('./faq.json')
    }
}

失败,出现以下错误:

代码语言:javascript
复制
Type 'Promise<typeof "*.json">' is not assignable to type 'Promise<FAQ[]>'.
EN

回答 1

Stack Overflow用户

发布于 2019-09-03 15:41:51

Typescript会给你一个错误,因为import返回一个JSON类型的promise,而不是FAQ[],因此你的错误。

相反,尝试:

代码语言:javascript
复制
sites: {[key: string]: SiteConfig} = {
    siteA: {
        title: 'xx',
        faqs: (): Promise<any> => import('./faq.json')
    }
}

您还可以使faqs成为异步函数

代码语言:javascript
复制
sites: {[key: string]: SiteConfig} = {
    siteA: {
        title: 'xx',
        faqs: async (): Promise<any> => await import('./faq.json')
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48369857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档