给出以下内容,
...
const NODE_ENV = 'development';
const sessionConfig = {
'development': ():session.SessionOptions => ({
'store': storeConfig.development(),
'secret': 'REDACTED',
'resave': false,
'saveUninitialized': true,
'cookie': {'secure': false},
'genid': () => uuidv4()
}),
'testing': ():session.SessionOptions => ({
'store': storeConfig.testing(),
'secret': 'REDACTED',
'resave': false,
'saveUninitialized': true,
'cookie': {'secure': false},
'genid': () => uuidv4()
}),
'production': ():session.SessionOptions => ({
'store': storeConfig.production(),
'secret': process.env.SESSION_SECRET || 'REDACTED',
'resave': false,
'saveUninitialized': true,
'cookie': {
'secure': process.env.SESSION_COOKIE_SECURE === 'true' || false
},
'genid': () => uuidv4()
})
}
{NODE_ENV} = process.env,
sessionEnvConfig = sessionConfig[NODE_ENV],
sessionEnvObject:session.SessionOptions = sessionEnvConfig(),
sessionObject = session(sessionEnvObject);
export default sessionObject;
每当尝试使用tsc进行编译时,都会出现此错误:
error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ development: () => SessionOptions; testing: () => SessionOptions; production: () => SessionOptions; }'.
No index signature with a parameter of type 'string' was found on type '{ development: () => SessionOptions; testing: () => SessionOptions; production: () => SessionOptions; }'.
我似乎无法解决这个TS错误吗?有人可以在这里解释此错误是什么,或者至少是我在做什么错?我想90%地肯定这是关于如何(未)定义对象类型的错误,但是我不知道该如何处理。 我也有这个environment.d.ts文件:
declare global {
namespace NodeJS {
interface ProcessEnv {
[key: string]: string | undefined;
NODE_ENV?: 'development' | 'production' | 'testing' ;
}
}
}
答案 0 :(得分:1)
该错误是因为Typescript正在推断string
的{{1}},而不是您的常量值之一。
因此,Typescript不确定NODE_ENV
(是NODE_ENV
)是否与对象中的任何键相对应。
您可以尝试以下方法:
string
这样,您可以将const NODE_ENV = 'development' as const;
的可能值缩小到NODE_ENV
。
另外,尝试这样声明您的development
:
process.env