元素隐式具有“任何”类型,因为类型的表达式
Posted
技术标签:
【中文标题】元素隐式具有“任何”类型,因为类型的表达式【英文标题】:Element implicitly has an 'any' type because expression of type 【发布时间】:2020-07-09 07:40:23 【问题描述】:这是我将鼠标悬停在 limit-entries.ts 中的 data[command] 上时得到的完整错误
(参数)数据:dataProps 元素隐式具有“任意”类型 因为“每小时”类型的表达式不能用于索引类型 '数据道具'。 “dataProps”类型上不存在属性“hourly”
darkSkyApiTypes.ts
interface dataProps
data:
latitude: number
longitude: number
timezone: string
currently?:
time: number
summary: string
temperature: number
humidity: number
hourly?:
summary: string
icon?: string
data:
time: number
temperature: number
humidity: number
[]
daily?:
summary: string
icon?: string
data:
time: number
temperatureMin: number
temperatureMax: number
humidity: number
[]
export = dataProps
limit-entries.ts
import hourlyLimit from '../config'
import dataProps from '../API/darkSkyAPITypes'
const limitEntries = (data: dataProps, command: string) =>
let entries
switch (command)
case 'currently':
entries = data[command]
break
case 'hourly':
entries = data[command].data.slice(0, hourlyLimit)
break
case 'daily':
entries = data[command].data
break
default:
entries = data[command]
return entries
module.exports = limitEntries
我收到标题错误。救命!
【问题讨论】:
旁注:TypeScript 中压倒性的约定是非内置类型以大写字母开头。所以DataProps
而不是dataProps
。
【参考方案1】:
dataProps
定义了一个具有单个***属性的对象类型,称为data
。您的data
变量的类型为dataProps
,因此您需要data.data
来引用该属性。所以你有data[command]
,你应该有data.data[command]
。 (或者更改dataProps
的定义。)
【讨论】:
以上是关于元素隐式具有“任何”类型,因为类型的表达式的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型
TypeScript - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型
元素隐式具有“任何”类型,因为字符串类型的表达式 | number 不能用于索引类型
如何使用命名数组的接口:元素隐式具有“任何”类型,因为索引表达式不是“数字”类型