你如何修补明确定义的定义

时间:2017-03-25 14:12:22

标签: typescript typescript-typings

我正在使用npm模块,在@types / * / index.d.ts文件中有一些缺少的定义。 我已经提交了一个问题。

与此同时,我想做一些本地化的事情来解决这个问题,结果证明这很难。

我尝试修补index.d.ts文件,但我正在使用yarn,它会嗅出更改并在每次添加另一个模块时“修复”该文件。所以某种本地补丁最好。

我尝试过添加一个本地定义,但要么我做得不对,要么就是不可能。这是许多人的一次尝试:本地定义,如

import {MapControl} from 'react-leaflet'
...
declare class MapControl extends React.Component<MapControlProps, any> {
    leafletElement: L.Control
}

没有帮助; import没有参考MapControl的实现,只是仍然看到没有定义。直接指向node_modules/react-leaflet/...只会遇到其他问题。

1 个答案:

答案 0 :(得分:2)

模块扩充的语法必须是:

import * as React from "React";

declare module 'react-leaflet' {
    type MapControlPosition = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';

    interface MapControlProps {
        position: MapControlPosition
    }

    class MapControl extends React.Component<MapControlProps, any> {
        leafletElement: L.Control
    }
}

有关详细信息,请参阅此处https://www.typescriptlang.org/docs/handbook/release-notes/typescript-1-8.html#augmenting-globalmodule-scope-from-modules