我们有一个从其他文件导出对象的模块。
为简单起见,我们称之为Vehicle. 它出口Car,Boat和Plane。
我们有一个对应于这些车辆的枚举,假设如下:
enum Vehicles {
Car,
Boat,
Plane,
}
Run Code Online (Sandbox Code Playgroud)
我们希望使用枚举来指定我们应该使用哪个导入的对象。
我们知道我们可以做一个 switch/case,但是随着我们的枚举的增长,这变得不必要。我们的一些类导出数十种对象变体,然后我们在其他地方使用这些变体(我们无法使用类型/接口来简化)。
switch(vehicle) {
case Vehicles.Car: {
return Car;
}
case Vehicles.Boat: {
return Boat;
}
case Vehicles.Plane: {
return Plane;
}
}
Run Code Online (Sandbox Code Playgroud)
我们在 Svelte 中使用 TypeScript。导入是一个包(例如 Google Charts [charts]、fortawesome [icons] 等)。我们希望创建一种包装器来轻松初始化特定组件。
例子:
<script lang="ts">
import { a, b, c } from x
const y = () => {
// logic here
}
</script>
<y/>
Run Code Online (Sandbox Code Playgroud)
这个问题似乎是特定于 TypeScript 的,所以我特意从我的问题中省略了 svelte 标签
小智 0
您可以使用以下地图
const vehicleComponentsMap: Record<Vehice, SvelteComponent> = {
[Vehicle.Car]: Car,
....
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您对车辆实现文件有约定,则可以使用它来动态构建此地图(通过按约定从文件收集数据)。
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |