元素隐式具有“任何”类型,因为类型的表达式

Posted

技术标签:

【中文标题】元素隐式具有“任何”类型,因为类型的表达式【英文标题】:Element implicitly has an 'any' type because expression of type 【发布时间】:2021-08-16 08:51:31 【问题描述】:

我不知道我该如何解决这个问题......

// sessionTime: ["2021-05-27 00:00:00", "2021-05-28 00:00:00"]
const  sessionTime, routingTime, ...params  = parseQueryString(history.location.search)

if (sessionTime != null) 
  const sessionStartTime = sessionTime[0];     // <= type error occur this point
  ...

[错误] TS7053:元素隐式具有“任何”类型,因为类型“0”的表达式不能用于索引类型“字符串 |号码 |布尔值 | (string | number | boolean)[]'.

我该如何解决这个错误...

【问题讨论】:

【参考方案1】:

这个错误说sessionTime的类型是:

string | number | boolean | (string | number | boolean)[]

这意味着它可能有很多东西。它可能是您所期望的数组,也可能只是 string | number | boolean

因此,在将其视为一个数组之前,您需要确保它是一个数组。你可以通过测试来做到这一点:

if (Array.isArray(sessionTime)) 
  // sessionTime is an array here
  console.log(sessionTime[0])
 else 
  // sessionTime is not an array here
  console.log(sessionTime)

Working example on typescript playground

【讨论】:

以上是关于元素隐式具有“任何”类型,因为类型的表达式的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

TypeScript - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

元素隐式具有“任何”类型,因为字符串类型的表达式 | number 不能用于索引类型

如何使用命名数组的接口:元素隐式具有“任何”类型,因为索引表达式不是“数字”类型

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型 - Phaser

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型 React Typescript