我为leaflet-arrowheads写了一个插件leaflet,它扩展了传单的Polyline类。我有一个创建打字稿声明文件的请求。我正在尝试根据instructions from the typescript docs来解决问题,但是我不确定自己是否做对了。我的项目目录如下:
project
-node_modules
-src
| -index.js
| -leaflet-arrowheads.js
package.json
我的理解是,我想在我的模块所在的index.d.ts
文件夹中粘贴一个src
磁贴。因此,我将这样做:
project
-node_modules
-src
| -index.js
| -index.d.ts
| -leaflet-arrowheads.js
package.json
问题1:这是正确的方法吗?还是应该将此文件添加到“ leaflet-arrowheads / index.d.ts”下的DefinitelyTyped / types文件夹中,并指示人们使用npm i @types/leaflet-arrowheads
?
从@types.leaflet
开始,传单有自己的打字稿标记。 (您可以看到代码here),它定义了折线上可用的方法类型。我只是想补充一下,因为我的插件只是向L.Polyline
添加了一些方法。 Polyline
类型定义如下:
export class Polyline<T extends geojson.GeometryObject = geojson.LineString | geojson.MultiLineString, P = any> extends Path {
constructor(latlngs: LatLngExpression[] | LatLngExpression[][], options?: PolylineOptions);
toGeoJSON(): geojson.Feature<T, P>;
getLatLngs(): LatLng[] | LatLng[][] | LatLng[][][];
// ... a few more method and options definitions
}
问题2:如何向此定义添加一些方法?到目前为止,我的index.d.ts
文件中有此文件:
export interface ArrowheadOptions {
yawn?: number;
size?: string | number;
frequency?: string | number;
proportionalToTotal?: false;
}
export interface Polyline {
arrowheads: (options?: ArrowheadOptions) => any;
buildVectorHats: () => any;
getArrowheads: () => any;
deleteArrowheads: () => any;
}
我的理解是,这只会将这些选项合并到现有的Polyline
类型定义中。那是对的吗?我要走吗?我看到了其他使用如下语法的插件:
import * as L from 'leaflet'
declare module leaflet {
// export interfaces here
}
其他人再次使用这种语法:
import { Control } from 'leaflet'
declare module 'leaflet {
namespace Control {
interface ControlOptions{
// some definitions here
}
}
}
如果这是一个简单的问题,请原谅我,对于这样的特定情况,我发现打字稿文档有些混乱。我想确保自己编写正确,以便我的定义适合Leaflet及其L.Polyline
的现有命名空间。问题3:我在index.d.ts
文件中执行操作的方式与此处的其他2个示例之间有什么区别?感谢您的阅读。