gpt4 book ai didi

typescript - ES6 typescript 将所有导出的常量导入为数组

转载 作者:行者123 更新时间:2023-12-03 08:46:04 26 4
gpt4 key购买 nike

我正在尝试导出许多常量,稍后可以将它们作为数组导入和映射。我无法将它们全部放入一个对象中并导出它们,因为我正在使用泛型(OptionInterface)并且我希望保留类型验证。

目前,我将每个对象导出为命名导出,然后将所有对象导出为数组。问题是另一个开发人员可能不知道他必须向导出的数组添加新元素。

一个例子:

//ElemSettings.tsx
export interface ElemProps<OptionInterface = any> {
title: string,
key: string,
options: OptionsInterface[]

export interface SpecialOption {
s1: string,
s2: number
}


//Elements.tsx - what I wish to export
export const elemOne: ElemProps {
title: 'element One',
key: elemOne'
options: [1,2,3]
}

export const elemTwo: ElemProps {
title: 'element Two',
key: elemTwo'
options: [1,2,3]
}

export const elemThree: ElemProps<SpecialOption> {
title: 'element Two',
key: elemTwo'
options: [{s1:'one',s2:1},{s1:'two',s2:2}]
}

//This is how I export now
export const elems: Array<ElemProps> =
[elemOne, elemTwo, elemThree]



//user.tsx
import { elems } from 'Elements';

const doSomething = () => {
elems.map(...)
}

如果我尝试删除导出的数组并仅导入所有元素,例如:

import * as elems from 'Elements';

然后像在 doSomething 中一样使用它,我收到错误:

Property 'map' does not exist on type 'typeof import("Elements")'.

有什么想法可以实现将所有常量导出为数组但同时保持输入吗?

最佳答案

import * as elems 可能会给你一个像这样的对象:

{
"elemOne": ...
"elemTwo": ...
...
}

尝试使用Object.values获取包含导出值的数组:

import * as elems from 'Elements';

const doSomething = () => {
Object.values(elems).map(...)
}

关于typescript - ES6 typescript 将所有导出的常量导入为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61436556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com