Name: typed-screeps
Owner: screepers
Description: Strong TypeScript declarations for the game Screeps.
Created: 2017-05-28 02:19:49.0
Updated: 2018-03-23 13:02:43.0
Pushed: 2018-04-01 12:44:54.0
Size: 682
Language: TypeScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Strong TypeScript declarations for the game Screeps.
The type definitions are published on DefinitelyTyped. To install them, run the following.
m
install @types/screeps
rn
add @types/screeps
Memory
is typed by default. The added typings are:
CreepMemory
FlagMemory
SpawnMemory
RoomMemory
If you like the idea of typed memory, but aren't ready to just jump fully in, you only need to make sure you define an interface for the above four types. Then you can extend them at a later time.
Example:
rface CreepMemory { [name: string]: any };
rface FlagMemory { [name: string]: any };
rface SpawnMemory { [name: string]: any };
rface RoomMemory { [name: string]: any };
Any place in code that uses a constant (ex STRUCTURE_EXTENSION
or FIND_MY_SPAWNS
is now constrained to use literal types. Here is the list of the new types:
PartConstant
dableStructureConstant (this is a subset of StructureConstant)
ctureConstant
Constant
Constant
ctionConstant
urceConstant
ralConstant (this is a subset of ResourceConstant)
rConstant
epsReturnCode
ain
To update your code, you just need to change any string
types to match one of the above. For example, if your code had:
tion getBody(): string[] {
rn [ WORK, MOVE, CARRY ];
Change it to:
tion getBody(): BodyPartConstant[] { // this line changed
rn [ WORK, MOVE, CARRY ];
Some original functions were incorrectly typed to not include null
as a possible return. You may need to update your code to reflect this update (ex. findClosestByPath
or findClosestByRange
)
ConstructionSite
can be optionally constrained by a structure type (ex. ConstructionSite<STRUCTURE_CONTAINER>
). TypeScript will enforce that the type
property of the ConstructionSite
appropriately matchesResource
can optionally be constrained (ex. Resource<RESOURCE_ENERGY>
)Mineral
can optionally be constrained by MineralConstant
(ex. Mineral<RESOURCE_GHODIUM>
)Structure
can optionally be constrained (ex Structure<STRUCTURE_SPAWN | STRUCTURE_EXTENSION>
)Structure
(ex StructureContainer
) have their type
property correspondingly constrainedLookAt
results are now constrained to the type looked forFind
-type functions are now constrained to have a RoomPosition
Issues and Pull Requests are welcome! Please read the Contributing Guidelines and Code of Conduct beforehand.
Due to some unresolved issues in TypeScript, a few parts of the API can't currenty be typed perfectly without tradeoffs.
Below is a list (feel free to open an issue if you have any ideas, or wish to discuss):
store
or carry
(ex. myContainter.store
) returns an object with optional keys for each Resource Type, but is guaranteed to have a key for RESOURCE_ENERGY
. This is currently not (perfectly) typable in TypeScript (see issues #13573 and #12215). The chosen workaround is to just manually list the types using a fake type _ResourceConstantSansEnergy