在全局声明打字稿中声明进程变量。d.ts
Declare process var in global declare typescript .d.ts
我知道设置 .env 类型,我们把这段代码写在 .d.ts:
var process: {
env: {
MONGO_DB_URL: string;
}
}
但是如果我在全局声明中这样做,就像这样:
declare global {
var process: {
env: {
MONGO_DB_URL: string;
}
}
module Express {
export interface Request {
decodedToken: DecodedToken;
}
export interface Application {
io: Server;
sessionQIDtoSocketMap: Record<string, string>;
}
}
}
它给我这个错误:
var process: globalThis.NodeJS.Process
Subsequent variable declarations must have the same type. Variable 'process' must be of type 'Process', but here has type '{ env: { MONGO_DB_URL: string; }; }'.ts(2403)
globals.d.ts(44, 13): 'process' was also declared here.
如果我这样做:
declare var process: {
env: {
MONGO_DB_URL: string;
};
};
declare global {
module Express {
export interface Request {
decodedToken: DecodedToken;
}
export interface Application {
io: Server;
sessionQIDtoSocketMap: Record<string, string>;
}
}
}
然后错误消失了,但是打字稿仍然没有注册类型
我前一段时间遇到了同样的问题。像这样引用我的 .env 变量解决了我的问题
const MONGODB_URL = process.env["MONGO_DB_URL"];
编辑
这是我最后做的,比我之前的回答稍微好一点。在 globals.d.ts:
declare namespace NodeJS {
interface ProcessEnv {
MONGO_DB_URL: string
//etc...
}
}
然后像以前一样使用点符号引用 .env 变量。你应该得到 intellisense
当有declare global
时,那么代码应该是:
declare global {
namespace NodeJS {
export interface ProcessEnv {
JWT_SECRET: string;
}
}
}
我知道设置 .env 类型,我们把这段代码写在 .d.ts:
var process: {
env: {
MONGO_DB_URL: string;
}
}
但是如果我在全局声明中这样做,就像这样:
declare global {
var process: {
env: {
MONGO_DB_URL: string;
}
}
module Express {
export interface Request {
decodedToken: DecodedToken;
}
export interface Application {
io: Server;
sessionQIDtoSocketMap: Record<string, string>;
}
}
}
它给我这个错误:
var process: globalThis.NodeJS.Process
Subsequent variable declarations must have the same type. Variable 'process' must be of type 'Process', but here has type '{ env: { MONGO_DB_URL: string; }; }'.ts(2403)
globals.d.ts(44, 13): 'process' was also declared here.
如果我这样做:
declare var process: {
env: {
MONGO_DB_URL: string;
};
};
declare global {
module Express {
export interface Request {
decodedToken: DecodedToken;
}
export interface Application {
io: Server;
sessionQIDtoSocketMap: Record<string, string>;
}
}
}
然后错误消失了,但是打字稿仍然没有注册类型
我前一段时间遇到了同样的问题。像这样引用我的 .env 变量解决了我的问题
const MONGODB_URL = process.env["MONGO_DB_URL"];
编辑
这是我最后做的,比我之前的回答稍微好一点。在 globals.d.ts:
declare namespace NodeJS {
interface ProcessEnv {
MONGO_DB_URL: string
//etc...
}
}
然后像以前一样使用点符号引用 .env 变量。你应该得到 intellisense
当有declare global
时,那么代码应该是:
declare global {
namespace NodeJS {
export interface ProcessEnv {
JWT_SECRET: string;
}
}
}