Sha*_*edk 3 typescript ecmascript-6 webpack module-export
我正在尝试导出许多常量,稍后可以将它们导入并映射为数组。我无法将它们全部放入一个对象中并导出它们,因为我正在使用泛型(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(...)
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试删除导出的数组并仅导入所有元素,例如:
import * as elems from 'Elements';
Run Code Online (Sandbox Code Playgroud)
然后像 doSomething 中那样使用它,我收到错误:
Property 'map' does not exist on type 'typeof import("Elements")'.
Run Code Online (Sandbox Code Playgroud)
有什么想法如何实现将所有常量导出为数组但又保留输入吗?
import * as elems可能会给你一个像这样的对象:
{
"elemOne": ...
"elemTwo": ...
...
}
Run Code Online (Sandbox Code Playgroud)
尝试使用Object.values获取包含导出值的数组:
import * as elems from 'Elements';
const doSomething = () => {
Object.values(elems).map(...)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5107 次 |
| 最近记录: |