数组查找方法错误元素隐式具有“任何”类型
Posted
技术标签:
【中文标题】数组查找方法错误元素隐式具有“任何”类型【英文标题】:array find method error element implicitly has an 'any' type 【发布时间】:2020-03-19 05:50:07 【问题描述】:我遇到了 Typescript linting 的问题。场景是数据来自包含对象数组的 API。
[
"id": 3,
"name": "politics",
"slug": "politics",
,
"id": 2,
"name": "sport",
"slug": "sport",
,
"id": 1,
"name": "weather",
"slug": "weather",
]
我想要的是在创建任何新对象并尝试在服务器上发布之前,我们必须确保slug
是唯一的。所以我创建了一个名为uniqueStr
的实用函数,它将检查slug 是否存在。
ICategory.ts
:
export interface Category
id: number;
name: string;
slug: string;
parent: number;
utility.ts
import Category from './ICategory';
export const uniqueStr = (property: string, compareValue: string, data: Category[]): string =>
if (Array.isArray(data) && data.length > 0)
const objectFind = data.find((element) =>
return element[property] === compareValue;
);
// If not undefined
if (objectFind)
const message = `$property value should be unique.`;
alert(message);
throw new Error(message);
else
// Return value
return compareValue;
return compareValue;
;
在以下行 return element[property] === compareValue
Typescript linter 出现错误。
TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Category'. No index signature with a parameter of type 'string' was found on type 'Category'.
【问题讨论】:
我认为答案是***.com/questions/56833469/… 希望对您有所帮助。 @Jérôme 我已经看到了这个问题,但没有用。 【参考方案1】:您可以使用indexable-types 来指定可以通过字符串索引访问Category
接口实例的属性。
例子:
interface Category
id: number;
name: string;
slug: string;
parent: number;
[key: string]: number | string;
;
【讨论】:
谢谢你的回答你能告诉我为什么我在尝试添加对象时遇到data.unshift
的问题TS2345: Argument of type 'Category' is not assignable to parameter of type 'never'.
const category: Category = id: 1, name: name, slug: uniqueStr('slug',slug, data), parent: 1 ; data.unshift(category);
【参考方案2】:
试试这个
const index = this.selectedActors.findIndex((a: name: any; ) => a.name === actor.name);
之前用这个
const index = this.selectedActors.findIndex((a => a.name === actor.name);
【讨论】:
以上是关于数组查找方法错误元素隐式具有“任何”类型的主要内容,如果未能解决你的问题,请参考以下文章
错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在
Object.keys 迭代导致 Typescript 错误“元素隐式具有‘任何’类型,因为索引表达式不是‘数字’类型”