首页 > 解决方案 > 带点的打字稿别名

问题描述

我有以下导入(在同一个 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/sourceol/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,
    });

标签: typescripttypescript-typingsopenlayers-6

解决方案


要回答您的问题:

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

PS:请注意,这可能会破坏摇树(但我不太确定您将如何验证)。


但正如评论中提到的,这不一定比你已经在做的更好:

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

您可以安全地引用其中任何一个而不会发生任何命名冲突,并且它仍然非常易读。


推荐阅读