Referencia de Tipos
La plantilla incluye definiciones completas de tipos TypeScript para la API de Modding de Subway Builder v1.0.0. Así es como están organizadas.
Estructura de Archivos
Los tipos están divididos en múltiples archivos .d.ts en src/types/, agrupados por espacio de
nombres de la API:
| Archivo | Qué cubre |
|---|---|
api.d.ts | La interfaz principal ModdingAPI — conecta todo |
index.d.ts | Reexporta todos los tipos + declara window.SubwayBuilderAPI |
core.d.ts | Primitivos: Coordinate, BoundingBox, GameSpeed, BuildType, ElevationType |
game-state.d.ts | Tipos de entidad: Station, Track, Train, Route, DemandData, tipos de pasajeros |
game-constants.d.ts | GameConstants, ConstructionCosts, HighSlopeSpeedMultiplier |
game-actions.d.ts | Bond, BondType, BondResult |
build.d.ts | BlueprintTrackInput, PlaceBlueprintResult, CreateRouteOptions, etc. |
ui.d.ts | Sistema de UI: UIPlacement, tipos de opciones de botón/interruptor/slider/panel |
cities.d.ts | City, CityConfig, CityTab, CityDataFiles, ViewState |
trains.d.ts | TrainTypeConfig, TrainTypeStats |
stations.d.ts | StationTypeConfig |
map.d.ts | Tipos de mapa: MapSource, MapLayer, TileURLOverride, RoutingServiceOverride |
career.d.ts | MissionConfig, StarConfig, CareerMetrics, CareerOperators |
content-templates.d.ts | NewspaperTemplate, TweetTemplate |
pop-timing.d.ts | CommuteTimeRange |
storage.d.ts | set, get, delete y keys para datos persistentes |
i18n.d.ts | I18nAPI |
utils.d.ts | RechartsComponents |
schemas.d.ts | GameSchemas (esquemas de validación Zod) |
electron.d.ts | ElectronAPI, ElectronAPIExtended |
manifest.d.ts | ModManifest |
Los tipos de la API de build/storage están listados en la documentación oficial de la API, pero actualmente no son utilizables en tiempo de ejecución.
Cómo Funciona
index.d.ts reexporta todo y declara la interfaz global Window:
declare global {
interface Window {
SubwayBuilderAPI: ModdingAPI;
electron?: ElectronAPI;
electronAPI?: ElectronAPIExtended;
}
}
Esto te proporciona autocompletado completo cuando escribes window.SubwayBuilderAPI. en tu editor.
Tipos Clave de un Vistazo
Entidades del Juego
interface Station {
id: string;
name: string;
coords: [number, number]; // [longitud, latitud]
trackIds: string[];
routeIds: string[];
nearbyStations: NearbyStation[];
buildType: string;
createdAt: number;
// ...
}
interface Track {
id: string;
coords: [number, number][]; // Puntos de inicio y fin
trackType: string; // 'heavy-metro', 'light-metro', etc.
startElevation: number;
endElevation: number;
length: number;
// ...
}
interface Route {
id: string;
bullet: string; // Etiqueta visible ('A', '1', etc.)
color: string; // Color hexadecimal
stations: RouteStation[];
trainIds: string[];
// ...
}
interface Train {
id: string;
routeId: string;
position: Coordinate;
speed: number;
// ...
}
Primitivos Clave
type Coordinate = [number, number]; // [longitud, latitud]
type BoundingBox = [number, number, number, number]; // [minLng, minLat, maxLng, maxLat]
type GameSpeed = 'slow' | 'normal' | 'fast' | 'ultrafast';
type BuildType = 'blueprint' | 'built';
Tipos de UI
type UIPlacement =
| 'settings-menu'
| 'escape-menu'
| 'escape-menu-buttons'
| 'main-menu'
| 'bottom-bar'
| 'top-bar'
| 'debug-panel'
| 'menu-items'
| 'pause-menu'
| 'debug';
type NotificationType = 'success' | 'error' | 'info' | 'warning';
Extender Tipos
Si necesitas extender los tipos de la API (por ejemplo, agregando campos que hayas descubierto en
tiempo de ejecución), puedes usar la combinación de declaraciones de TypeScript en tu propio archivo
.d.ts:
// src/types/my-extensions.d.ts
declare module './game-state' {
interface Station {
myCustomField?: string;
}
}
Documentación Oficial
Para la referencia más actualizada de la API, consulta la documentación oficial de modding de Subway Builder.