增强Mapbox GL TypeScript声明

时间:2018-12-07 17:29:52

标签: typescript definitelytyped

我有一个outstanding PR,可以将fill-extrusion-vertical-gradient属性添加到DefinitelyTyped中的Mapbox GL JS的FillExtrusionPaint接口中。但是与此同时,我想在我的项目中增加该定义,以便可以避免在不使用any的情况下进行类型检查错误。

这是我的代码的一个版本:

import * as mapboxgl from 'mapbox-gl';

const foo: mapboxgl.FillExtrusionPaint = {
  'fill-extrusion-opacity': 0.75,
  'fill-extrusion-vertical-gradient': false,
};

这会产生错误,因为node_modules/@types/mapbox-gl/index.d.ts中缺少后一个属性:

Error message about vertical-extrusion-vertical-gradient

@types/mapbox-gl/index.d.ts的结构如下:

/// <reference types="geojson" />

export = mapboxgl;
export as namespace mapboxgl;

declare namespace mapboxgl {
// ...
    export interface FillExtrusionPaint {
        'fill-extrusion-opacity'?: number | Expression;
        'fill-extrusion-opacity-transition'?: Transition;
        'fill-extrusion-color'?: string | StyleFunction | Expression;
        // ...
    }
}

我在项目declarations/mapbox.augment.d.ts中创建了一个文件,内容如下:

/// <reference types="mapbox-gl" />

declare namespace mapboxgl {
  interface FillExtrusionPaint {
    'fill-extrusion-vertical-gradient'?: boolean;
  }
}

但这似乎没有效果。我犯了同样的错误。另一方面,如果我将declare namespace mapboxgl更改为module "mapbox-gl",则会出现错误:我会抱怨旧资产,而不是新资产。似乎该模块正在被替换而不是被扩充。

如何扩展此界面?

0 个答案:

没有答案