首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有nodejs的TypeScript : TypeScript编译错误

带有nodejs的TypeScript : TypeScript编译错误
EN

Stack Overflow用户
提问于 2022-05-23 21:00:36
回答 1查看 338关注 0票数 0

我用的是nodejs的打字本。在tsconfig.json文件中,我启用了"noImplicitAny":true。我不想在代码中使用任何类型。到目前为止,我已经成功地改正了所有的错误。我只剩下一个错误,我无法修复这个错误。我使用的是dotenv npm软件包。我有这个config.ts文件,在这里我指定了环境变量,并得到了下面的错误消息。

我在我的终端上发现了这个错误:

代码语言:javascript
复制
config.ts(13,12): error TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{ production: { SECRET: string | undefined; DATABASE: string | undefined; }; default: { SECRET: string; DATABASE: string; }; }'.

config.ts文件中的代码:

代码语言:javascript
复制
const config = {
    production: {
        SECRET: process.env.SECRET,
        DATABASE: process.env.MONGODB_URI
    },
    default: {
        SECRET: 'mysecretkey',
        DATABASE: 'mongodb://localhost:27017/pi-db'
    }
}

exports.get = function get(env: any[string]) {
    return config[env] || config.default
}

我尝试将env作为字符串,但仍然收到相同的错误消息。

代码语言:javascript
复制
exports.get = function get(env: string) {
    return config[env]: string || config.default: string
}

在过去的几天里,我一直在努力消除这个错误。我是TypeScript的新手。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-23 21:09:42

string可能过于通用,无法直接访问对象--您希望使用实际可用的键,而不是任何可能的字符串。在TypeScript中,您可以这样做:

代码语言:javascript
复制
exports.get = function get(env: keyof typeof config) {
    return config[env] || config.default
}

我认为它应该解决您的错误+为env参数启用适当的自动完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72354766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档