В TypeScript блоки declare
используются для описания ваших глобальных переменных.Другими словами, они представляют собой способ сообщить TypeScript, что он может ожидать в глобальном пространстве имен, но вы как разработчик должны убедиться, что они действительно есть.
Способ, которым вы можете создавать (и описывать)Глобальные переменные зависят от платформы.
Браузер (DOM)
import * as io from 'socket.io';
window.SocketServer = io.default();
declare global {
interface Window {
SocketServer: io.Server;
}
}
Требуется @types/socket.io
.Используется при доступе к window.SocketServer
.
Node.js
import * as io from 'socket.io';
declare global {
namespace NodeJS {
interface Global {
SocketServer: io.Server
}
}
}
global.SocketServer = io.default();
Требуется @types/socket.io
и @types/node
.Используется при доступе к global.SocketServer
.
Универсальный
Вы также можете описать переменную, которая уже является частью вашей среды и доступна как клиенту, так иserver.
Примером такой переменной может быть process
- это часть среды Node.js, но инструменты сборки, такие как Webpack, могут предоставлять ее содержимое клиенту.
import * as io from 'socket.io';
declare global {
var SocketServer: io.Server;
}