# Contributing to `@openstapps/core` Please see the appropriate general group contributing guides in [project-management](https://gitlab.com/openstapps/projectmanagement/tree/master/project-docs/workflow). ## Additional coding style ### Extract inline type definitions For consistency and correct functionality of `core-tools` we need well-defined type assignments. Type assignments shall always be primitive types, classes, interfaces, enums or unions. Not allowed are inline type-definitions. Those shall be refactored accordingly: ```typescript export interface SCPlaceWithoutReferences extends SCThing { ... // Use this: geo: SCGeoInformation; // Instead of: geo: { point: Point, polygon?: Polygon, }; } ``` ### Reuse the map structure If you come around a map-like-type use `SCMap`. ```typescript // Use this: interface AnyClass{ inventory: SCMap; } // Instead of: interface AnyClass{ inventory?: Array<{ key: string, value: number }>; } // or instead of interface AnyClass{ inventory?: { [key: string]: number }; } ```