Map.prototype.get
函数的返回值是V | undefined
(假设V
是存储在映射中的值的通用类型),因为如果您尝试通过键中不存在的键来访问元素,映射,则函数将返回undefined
。由于这个事实,TypeScript无法在编译时知道您的键值对是否在映射中,因此您会收到错误消息,因为您之前没有检查值是否不是undefined
尝试使用它们。为此添加检查,错误将消失:
对象可能是'undefined',并且无法调用可能是'undefined'的对象]]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象可能是'undefined',并且无法调用可能是'undefined'的对象]]相关的知识,希望对你有一定的参考价值。
嗨,我宣布了这个功能图。这个想法是在JSON文件中获取一个对象并对其进行过滤。因此,我为每个键创建了一个过滤器功能。
const filterMap: Map< string, (ticket: Ticket, filter: request) => boolean > = new Map(); filterMap.set( "after", (ticket: Ticket, filter: request) => ticket.creationTime >= parseDate(filter.date) ); filterMap.set( "before", (ticket: Ticket, filter: request) => ticket.creationTime <= parseDate(filter.date) ); filterMap.set( "from", (ticket: Ticket, filter: request) => ticket.userEmail === filter.email ); filterMap.set("filter", (ticket: Ticket, filter: request) => ticket.content.includes(filter.filter) ); filterMap.set("", (ticket: Ticket, filter: request) => ticket.content.includes(filter.filter) );
我想在本代码中尝试使用它
const filteredTickets = tempTicketsData.filter((ticket:Ticket) => if (request.kind) return ( // @ts-ignore filterMap.get(request.kind)(ticket, request) && // @ts-ignore filterMap.get("filter")(ticket, request) ); else // @ts-ignore return filterMap.get("filter")(ticket, request); );
标题中的问题出现在我评论过/// @ ts-ignore的地方?我该如何解决?
嗨,我宣布了这个功能图。这个想法是在JSON文件中获取一个对象并对其进行过滤。因此,对于每个键,我创建了一个过滤器功能。 const filterMap:Map
const filteredTickets = tempTicketsData.filter((ticket:Ticket) => const filter = filterMap.get("filter"); if (request.kind) const kind = filterMap.get(request.kind); if (!kind || !filter) return false; // check for undefined value return ( kind(ticket, request) && filter(ticket, request) ); if (!filter) return false; // check for undefined value return filter(ticket, request); );
else
语句后也不需要return
。另外,在return false
检查之后,您应该将undefined
更改为希望函数在undefined
中的任何一个值都返回时返回的值。
Map.prototype.get
函数的返回值是V | undefined
(假设V
是存储在映射中的值的通用类型),因为如果您尝试通过键中不存在的键来访问元素,映射,则函数将返回undefined
。由于这个事实,TypeScript无法在编译时知道您的键值对是否在映射中,因此您会收到错误消息,因为您之前没有检查值是否不是undefined
尝试使用它们。为此添加检查,错误将消失:
以上是关于对象可能是'undefined',并且无法调用可能是'undefined'的对象]]的主要内容,如果未能解决你的问题,请参考以下文章
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论
如何修复undefined不是一个对象 - 'this.navigation.openDrawer'
vue 数组对象取对象的属性: Cannot read property 'xxxx' of undefined
React Native错误:undefined不是对象(评估'_this2.props.navigation.navigate')