首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型{}{ date: string;}‘上不存在属性'date’

类型{}{ date: string;}‘上不存在属性'date’
EN

Stack Overflow用户
提问于 2018-11-24 19:36:14
回答 4查看 5.6K关注 0票数 0

我仍然是新的类型和类型在一般情况下,但这个错误是真的混淆了我。我使用npm模块query-string将查询字符串解析为键/值对的对象。但我不知道设置返回值的最佳方式是什么。使用query-string方法的.parse()将返回键/值对的对象或空对象。

示例:

代码语言:javascript
复制
queryString: { date: string } | {} =  queryString.parse(location.search);

当我试图使用queryString.date访问属性时,会得到以下错误:Property 'date' does not exist on type '{} | { date: string; }'

我肯定我错过了一些基本的东西,我就是搞不懂。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-11-24 19:45:54

当您试图访问该属性时,转换程序不知道是将该对象用作空对象还是使用日期对象。

有几种方法可以解决这一问题:

1:queryString: { date?: string } = queryString.parse(location.search);从本质上说,它意味着对象可以拥有date属性,但它是不必要的。如果您想让queryString.date成为适当的dateundefined,请使用此方法

2:如果你的用法像这样简单的话,那就用它来包围你的用法。

代码语言:javascript
复制
if(queryString.date !== undefined) {
   const date = queryString.date;
   //... Do stuff
}

3:(不建议)如果出于任何其他原因,你只是不感兴趣,如果它在那里或没有,你可以强迫转发器把它作为一个或另一个由as键盘

代码语言:javascript
复制
const myDate: Date = (queryString as {date: Date}).date
票数 2
EN

Stack Overflow用户

发布于 2018-11-24 19:44:04

只需将date作为可选属性即可。

代码语言:javascript
复制
queryString: { date?: string } =  queryString.parse(location.search);
票数 1
EN

Stack Overflow用户

发布于 2018-11-24 19:42:52

您的queryString属性也声明为空对象{}。简单地说,{}没有date的属性。

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

https://stackoverflow.com/questions/53461714

复制
相关文章

相似问题

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