【发布时间】:2020-06-20 17:07:37
【问题描述】:
我在 typescript 中创建了一个数组类型,看起来像这样
export type RamenApi = [
{
"Brand": string,
"Variety": string,
"Style": string,
"Country": string,
"Stars": number,
"Top Ten": string
}
]
现在,在我对数组进行排序和过滤的地方之一,我收到以下错误
Property '0' is missing in type '{ "Brand": string; "Variety": string; "Style": string; "Country": string; "Stars": number; "Top Ten": string; }[]' but required in type 'RamenApi'
知道为什么我会收到以下错误以及如何解决它吗?
type Props = {
searchData: RamenApi,
const [filteredSearch, setFilteredSearch] = useState<RamenApi | null>(null)
const {searchData} = props
const tempFilteredSearch = []
for (let i=0; i<searchData.length; i++) {
const currentResponse = searchData[i]
const searchVariable = currentResponse["Variety"].toLowerCase() + currentResponse["Brand"].toLowerCase() + currentResponse["Country"]
if (searchVariable.indexOf(text) > - 1) {
tempFilteredSearch.push(currentResponse)
}
}
setFilteredSearch(tempFilteredSearch.slice(0,5))
这是我收到错误setFilteredSearch(tempFilteredSearch.slice(0,5)) 的地方。此外,代码被缩短了。忽略缺少的括号或任何此类错误
【问题讨论】:
-
如果没有看到该错误消息所引用的代码,任何人都无法回答这个问题。请写minimal reproducible example。
-
您定义的类型的意思是“包含一个元素的数组,并且该元素是具有字段的对象:字符串类型的“品牌”,“品种”......”。但是,您尝试将包含多个项目的数组设置为您的类型的状态
-
@Shlang 好的,那么我如何创建我的类型以包含多个项目?
-
我不确定我是否理解您想要实现的目标。如果你只想拥有一个字符串数组,它是
string[],如果你想确保只有有限的字符串值集可以放入数组,它是("Brand" | "Variety" ...)[]。
标签: typescript