我曾经像这样加载一个json文件:
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
}
}
现在我想使用动态导入:
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')
}
}
失败了:
Type 'Promise<typeof "*.json">' is not assignable to type 'Promise<FAQ[]>'.
答案 0 :(得分:0)
打字稿给您一个错误,因为import
返回的是类型JSON
的诺言,而不是FAQ[]
,因此是您的错误。
请尝试:
sites: {[key: string]: SiteConfig} = {
siteA: {
title: 'xx',
faqs: (): Promise<any> => import('./faq.json')
}
}
您还可以使faqs
为异步函数
sites: {[key: string]: SiteConfig} = {
siteA: {
title: 'xx',
faqs: async (): Promise<any> => await import('./faq.json')
}
}