Типизированные события
Опишите событие один раз и подключите декларацию в отдельные server/client TypeScript-проекты. Так payload проверяется на обеих сторонах, а конфликтующие глобальные объявления vimp не смешиваются.
Сервер:
ts
vimp.on('garage:spawn', (player, payload) => {
const vehicle = vimp.vehicles.create(
vimp.hash(payload.model),
94.5,
-1940.2,
20.7,
307,
{ numberPlate: 'VIMP', engineOn: true },
)
if (vehicle) {
player.emit('garage:spawned', { vehicleId: vehicle.id })
}
})Клиент:
ts
vimp.on('garage:spawned', ({ vehicleId }) => {
vimp.notify(`Vehicle #${vehicleId} is ready`)
})
vimp.emitServer('profile:ready', { nickname: 'ViceRider' })Контракты событий хранятся рядом с соответствующим контекстом примера и проверяются отдельными tsconfig.