Как создать глобальную переменную на TypeScript?
Я пытаюсь создать переменную, которую можно будет использовать в любой части проекта.
При использовании:
global.test = 5;
Возникает ошибка:
Свойство "test" не существует в типе "Global".
Я знаю что использовать глобальные - это зло, но мне нужно это.
Ответы (2 шт):
package.json
{
"dependencies": {
"@types/node": "^13.13.4",
"typescript": "^3.8.3"
}
}
q.ts
namespace NodeJS {
export interface Global {
readonly qwaConst: string
qwaVar: string
}
}
global.qwaVar = ""
//@ts-ignore
global.qwaConst = ""
index.ts
import './q' // не забываем первым делом импортировать файл с инициализацией глобальных переменных, желательно констант
// import '...' затем уже остальные
global.qwaConst
global.qwaVar
@types/node
node_modules/@types/node/globals.d.ts ->
namespace NodeJS -> interface Global
расширить можно так
namespace NodeJS {
export interface Global {
readonly qwaConst: string
qwaVar: string
}
}
ещё немного примеров
globalThis
В последних версиях создание глобальной переменной изменилось
Многие ответы устарели. Если вы используете Node.js не забудьте установить @types/node последней версии. И так, вот как теперь нужно делать:
export {};
declare global {
var qwaVar: string;
}
И всё, теперь можете обращаться к переменной qwaVar через global или window (в зависимости от того какое у вас окружение):
console.log(global.qwaVar)
Не забудьте только в начале файла с declare global поставить export {}, это нужно для того чтобы ваш файл считался за модуль (или что-то вроде того). Эту декларацию можно положить в отдельный файл, как я это и сделал:
g.ts
/* eslint-disable no-var */
/* eslint-disable no-unused-vars */
export {};
declare global {
var nodeVersion: string;
}
index.ts
global.nodeVersion = process.versions.node;
console.log(global.nodeVersion);