带点的打字稿别名

时间:2020-11-01 08:37:29

标签: typescript typescript-typings openlayers-6

我具有以下导入(在同一TS源文件中):

import {Vector as sourceVector} from "ol/source";
import {Vector} from "ol/layer";

以下是 Vector ol / source 中的导出方式:

export { default as Vector } from './source/Vector';

ol / layer

export { default as Vector } from './layer/Vector';

是否可以以某种方式重构导入,所以它看起来像这样:

import {Vector as source.Vector} from "ol/source";
import {Vector as layer.Vector} from "ol/layer";

不幸的是,我对 ol / source ol / layer 没有任何控制权,我不能影响他们的设计决策和命名约定。我必须在相同的源代码中导入和使用这两种类型:

  ngAfterViewInit(): void {
    const markerSource = new sourceVector({});

    this.map = new Map({
      layers: [
        new TileLayer({
          source: new OSM(),
        }),
        new Vector({ source: markerSource }),
      ],
      view: new View({
        center: fromLonLat([11.57548, 48.137552]),
        zoom: 13,
      }),
      target: this.myMap.nativeElement,
    });

1 个答案:

答案 0 :(得分:1)

回答您的问题:

import * as source from 'ol/source';
import * as layer from "ol/layer";

P.S .:请注意,此可能可能会破坏tree shaking(但我不太确定您如何验证)。


但是正如comments中所述,这不一定比您已经做的更好:

import {Vector as sourceVector} from "ol/source";
import {Vector as layerVector} from "ol/layer";

您可以安全地引用其中任何一个,而没有任何命名冲突,并且它仍然很可读。