我仍然是新的类型和类型在一般情况下,但这个错误是真的混淆了我。我使用npm模块query-string将查询字符串解析为键/值对的对象。但我不知道设置返回值的最佳方式是什么。使用query-string方法的.parse()将返回键/值对的对象或空对象。
示例:
queryString: { date: string } | {} = queryString.parse(location.search);当我试图使用queryString.date访问属性时,会得到以下错误:Property 'date' does not exist on type '{} | { date: string; }'
我肯定我错过了一些基本的东西,我就是搞不懂。
发布于 2018-11-24 19:45:54
当您试图访问该属性时,转换程序不知道是将该对象用作空对象还是使用日期对象。
有几种方法可以解决这一问题:
1:queryString: { date?: string } = queryString.parse(location.search);从本质上说,它意味着对象可以拥有date属性,但它是不必要的。如果您想让queryString.date成为适当的date或undefined,请使用此方法
2:如果你的用法像这样简单的话,那就用它来包围你的用法。
if(queryString.date !== undefined) {
const date = queryString.date;
//... Do stuff
}3:(不建议)如果出于任何其他原因,你只是不感兴趣,如果它在那里或没有,你可以强迫转发器把它作为一个或另一个由as键盘
const myDate: Date = (queryString as {date: Date}).date发布于 2018-11-24 19:44:04
只需将date作为可选属性即可。
queryString: { date?: string } = queryString.parse(location.search);发布于 2018-11-24 19:42:52
您的queryString属性也声明为空对象{}。简单地说,{}没有date的属性。
https://stackoverflow.com/questions/53461714
复制相似问题