Comments (4)
To clarify, it doesn't necessarily have to be in a .d.ts
file, it just has to be an ambient declaration. For example, in your .ts
file (with at least one import or export) you can use declare global { interface CreepMemory { ... } }
to accomplish the same effect.
from typed-screeps.
... apparently you have to put the interface in a *.d.ts
file, and not just a *.ts
file
from typed-screeps.
Just for anyone in the future looking for a more complete solution:
declare global { interface CreepMemory {
[key:string]: any
} }
from typed-screeps.
UPDATE: This structure in my Cartograph class worked
//global interface
declare global {
interface Cartograph {
guide: Guide
}
}
//local interface
export interface Cartograph {
guide: Guide
}
//Mediating interface because we can not name any interface Cartograph unless it looks like our class
interface Guide {
[ar: string]: {
[ax: number]: {
[ay: number]: {
[zr: string]: {
[zx: string]: {
[zy: number]: number
}
}
}
}
};
}
//local class
export class Cartograph extends Map implements Cartograph {
static guide: Guide;
constructor(guide?: Guide) {
super();
if (guide) {
this.guide = guide;
}
}
}
And we can use it this way:
import { Cartograph} from "../classes/Cartograph"
let d: number = this.move(Cartograph.guide[this.pos.roomName][this.pos.x][this.pos.y][zPOS.roomName][zPOS.x][zPOS.y].d);
END UPDATE
I'm having a hard time using this currently; the installed node_module for Screeps types comes with types in a global.d.ts and it looks like declaring the interface as a global:
declare global {
interface Cartograph {
//containing object
//current roomName
cartograph: Guide
}
}
(this breaks my local reference to the interface if I don't repeat the interface in a local scope as seen below)
does not work, and nor does writing the interface out in my own types.d.ts sitting in src/ :
export interface Cartograph {
//containing object
//current roomName
cartograph: Guide
}
And neither resolves my problem trying to make something like this happen:
global.Cartograph //Property 'Cartograph' does not exist on type 'Global'.
or
Cartograph.chart//Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'typeof Cartograph'.
Ideally, I'd like to make my Cartograph class and interface in a single file, Cartograph.ts, and have my types.d.ts only handle interfaces that don't belong to specific classes. Can someone show me the error of my ways?
from typed-screeps.
Related Issues (20)
- June 2020 Game Updates HOT 1
- Potential solution for store/carry current Caveat HOT 2
- MapVisual
- Visuals updates - Import and export
- error using look constants `creep.pos.lookFor(LOOK_TERRAIN)` HOT 1
- Migrate from Travis CI to Github Actions HOT 1
- Season 1 HOT 1
- season2 SymbolDecoder HOT 1
- store on energy and all resource structures HOT 11
- `OBSTACLE_OBJECT_TYPES` causes `includes` argument to be too narrow, defeating the purpose of it existing. HOT 1
- Publish non-global version of definitions HOT 3
- Missing undefined return type for CostMatrix#get
- Argument in the filter function of `findClosestByRange` can not be inferred
- Introduce some util types for writing test cases HOT 1
- Memory is constant and therefore throws an error when trying to assign to it HOT 1
- Rollback breaking change on `Game.getObjectById` to follow Semantic Versioning HOT 2
- Add a new subset of `AnyOwnedStructures`, excluding `KeeperLairs`, etc.
- Refactor find* methods. Part 1/3 : Decoupling `FilterOption` and `FindConstant`
- Refactor find* methods. Part 2/3 : Ban random cast from results of `find*()`
- Refactor find* methods. Part 3/3 : Ban `find<StructureType>()`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typed-screeps.