forked from MapComplete/MapComplete
		
	Improve typing
This commit is contained in:
		
							parent
							
								
									1fbe033456
								
							
						
					
					
						commit
						4d783aae45
					
				
					 4 changed files with 19 additions and 8 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, OsmId, OsmTags, RelationId, WayId} from "../../Models/OsmFeature"; | ||||
| 
 | ||||
| export abstract class OsmObject { | ||||
| 
 | ||||
|  | @ -38,10 +39,12 @@ export abstract class OsmObject { | |||
|             throw "Backend URL must begin with http" | ||||
|         } | ||||
|         this.backendURL = url; | ||||
|         this.DownloadObject("id/5") | ||||
|     } | ||||
| 
 | ||||
|     public static DownloadObject(id: string, forceRefresh: boolean = false): Store<OsmObject> { | ||||
|     public static DownloadObject(id: NodeId, forceRefresh?: boolean ): Store<OsmNode> ; | ||||
|     public static DownloadObject(id: WayId, forceRefresh?: boolean ): Store<OsmWay> ; | ||||
|     public static DownloadObject(id: RelationId, forceRefresh?: boolean ): Store<OsmRelation> ; | ||||
|     public static DownloadObject(id: OsmId, forceRefresh: boolean = false): Store<OsmObject> { | ||||
|         let src: UIEventSource<OsmObject>; | ||||
|         if (OsmObject.objectCache.has(id)) { | ||||
|             src = OsmObject.objectCache.get(id) | ||||
|  | @ -51,14 +54,14 @@ export abstract class OsmObject { | |||
|                 return src; | ||||
|             } | ||||
|         } else { | ||||
|             src = UIEventSource.FromPromise(OsmObject.DownloadObjectAsync(id)) | ||||
|             src = UIEventSource.FromPromise(OsmObject.DownloadObjectAsync(<any> id)) | ||||
|         } | ||||
| 
 | ||||
|         OsmObject.objectCache.set(id, src); | ||||
|         return src; | ||||
|     } | ||||
| 
 | ||||
|     static async DownloadPropertiesOf(id: string): Promise<any> { | ||||
|     static async DownloadPropertiesOf(id: OsmId): Promise<OsmTags> { | ||||
|         const splitted = id.split("/"); | ||||
|         const idN = Number(splitted[1]); | ||||
|         if (idN < 0) { | ||||
|  | @ -70,7 +73,10 @@ 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>{ | ||||
|         const splitted = id.split("/"); | ||||
|         const type = splitted[0]; | ||||
|         const idN = Number(splitted[1]); | ||||
|  |  | |||
|  | @ -1,4 +1,9 @@ | |||
| import {Feature, Geometry} from "@turf/turf"; | ||||
| 
 | ||||
| export type OsmTags = Record<string, string> & {id: string} | ||||
| 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: OsmId} | ||||
| export type OsmFeature = Feature<Geometry, OsmTags> | ||||
|  | @ -41,7 +41,7 @@ | |||
|     "maxZoom": 14, | ||||
|     "minNeededElements": 100 | ||||
|   }, | ||||
|   "credits": "nicolelaine" | ||||
|   "credits": "nicolelaine", | ||||
|   "layers": [ | ||||
|     "postboxes", | ||||
|     "postoffices", | ||||
|  |  | |||
|  | @ -604,7 +604,7 @@ describe("RelationSplitHandler", () => { | |||
|         "should split turn restrictions (split of https://www.openstreetmap.org/way/143298912)", | ||||
|         async () => { | ||||
| 
 | ||||
|             const relation: OsmRelation = <OsmRelation>await OsmObject.DownloadObjectAsync("relation/4374576") | ||||
|             const relation: OsmRelation = await OsmObject.DownloadObjectAsync("relation/4374576") | ||||
|             const originalNodeIds = | ||||
|                 [ | ||||
|                     1407529979, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue