我的代码:
const configPath = process.env[`${configPrefix}_CONFIG_PATH`]
? path.resolve(process.env[`${configPrefix}_CONFIG_PATH`])
: path.resolve('ab', 'config');
错误:
application/libs/config.ts:18:20 - error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
18 ? path.resolve(process.env[`${configPrefix}_CONFIG_PATH`])
为什么要抱怨?我正在检查process.env[`${configPrefix}_CONFIG_PATH`]
上是否未定义,然后与?
和:
决定取哪个值。
答案 0 :(得分:0)
我用以下代码解决了这个问题:
const configPath = process.env[`${configPrefix}_CONFIG_PATH`] || path.resolve('ab', 'config');
虽然我的第一个示例中的Typescript为什么不起作用,但没有回答。
答案 1 :(得分:0)
在第一个示例中,如果存在process.env["${configPrefix}_CONFIG_PATH"]
,则返回path.resolve(process.env["${configPrefix}_CONFIG_PATH"])
,但是将其包装在path.resolve()
中显然仍然会导致undefined
。
const configPath = process.env[`${configPrefix}_CONFIG_PATH`]
? path.resolve(process.env[`${configPrefix}_CONFIG_PATH`])
: path.resolve('ab', 'config');
在您自己的答案中,您返回与未定义检查相同的值,因此在这种情况下您就不会遇到问题。