forked from MapComplete/MapComplete
Improve typing
This commit is contained in:
parent
234129ad32
commit
e653a76b69
2 changed files with 15 additions and 4 deletions
|
@ -3,6 +3,7 @@ import * as polygon_features from "../../assets/polygon-features.json";
|
|||
import {Store, UIEventSource} from "../UIEventSource";
|
||||
import {BBox} from "../BBox";
|
||||
import * as OsmToGeoJson from "osmtogeojson";
|
||||
import {NodeId, OsmFeature, OsmId, OsmTags, RelationId, WayId} from "../../Models/OsmFeature";
|
||||
|
||||
export abstract class OsmObject {
|
||||
|
||||
|
@ -16,7 +17,7 @@ export abstract class OsmObject {
|
|||
/**
|
||||
* The OSM tags as simple object
|
||||
*/
|
||||
tags: {} = {};
|
||||
tags: OsmTags ;
|
||||
version: number;
|
||||
public changed: boolean = false;
|
||||
timestamp: Date;
|
||||
|
@ -69,7 +70,12 @@ export abstract class OsmObject {
|
|||
return rawData.elements[0].tags
|
||||
}
|
||||
|
||||
static async DownloadObjectAsync(id: string): Promise<OsmObject | undefined> {
|
||||
static async DownloadObjectAsync(id: NodeId): Promise<OsmNode | undefined>;
|
||||
static async DownloadObjectAsync(id: WayId): Promise<OsmWay | undefined>;
|
||||
static async DownloadObjectAsync(id: RelationId): Promise<OsmRelation | undefined>;
|
||||
static async DownloadObjectAsync(id: OsmId): Promise<OsmObject | undefined>;
|
||||
static async DownloadObjectAsync(id: string): Promise<OsmObject | undefined>;
|
||||
static async DownloadObjectAsync(id: string): Promise<OsmObject | undefined>{
|
||||
const splitted = id.split("/");
|
||||
const type = splitted[0];
|
||||
const idN = Number(splitted[1]);
|
||||
|
@ -315,7 +321,7 @@ export abstract class OsmObject {
|
|||
tgs["_last_edit:changeset"] = element.changeset
|
||||
tgs["_last_edit:timestamp"] = element.timestamp
|
||||
tgs["_version_number"] = element.version
|
||||
tgs["id"] = this.type + "/" + this.id;
|
||||
tgs["id"] =<OsmId> ( this.type + "/" + this.id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -347,7 +353,7 @@ export class OsmNode extends OsmObject {
|
|||
return [this.lat, this.lon];
|
||||
}
|
||||
|
||||
asGeoJson() {
|
||||
asGeoJson() : OsmFeature{
|
||||
return {
|
||||
"type": "Feature",
|
||||
"properties": this.tags,
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
import {Feature, Geometry} from "@turf/turf";
|
||||
|
||||
export type RelationId = `relation/${number}`
|
||||
export type WayId = `way/${number}`
|
||||
export type NodeId = `node/${number}`
|
||||
export type OsmId = NodeId | WayId | RelationId
|
||||
|
||||
export type OsmTags = Record<string, string> & {id: string}
|
||||
export type OsmFeature = Feature<Geometry, OsmTags>
|
Loading…
Reference in a new issue