类型字符串上不存在该属性|目的

时间:2020-07-29 10:12:23

标签: javascript typescript

我的文件中有一个.gitlab文件,内容如下:

apiToken: ****

在我的项目中,我有一个文件config.ts,在构造函数中,我有:

constructor() {
        this.gitlabPersonalToken = yaml.safeLoad(fs.readFileSync(os.homedir() + "/.gitlab").toString()).apiToken;
// error property 'apiToken' does not exist on type 'string | object'
    }

如何解决此错误以及为什么我不理解该错误

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

正如对您的问题的评论所暗示的那样,您似乎必须将safeLoad()的结果转换为期望的类型。关于您的代码,看起来可能像这样:

interface GitLabConfig {
    apiToken: string;
}

const parsed = yaml.safeLoad(fs.readFileSync("./some.yaml").toString()) as GitLabConfig;

const apiToken = parsed.apiToken;

那样,打字稿接受“已解析”对象作为您的类型,并且不会收到提到的错误。