reactjs - 元素隐式具有“任何”类型,因为“任何”类型的表达式不能用于索引类型“{}” - React Anagram
问题描述
我一直在尝试扩展我的 React 功能,因此尝试将项目从 Javascript 转移到 Typescript,但我遇到了一些似乎无法修复的错误。
我做了很多阅读和搜索,但似乎无法弄清楚我做错了什么。
其他组件和主应用程序一样工作。就是这个组件。
// Imports
interface Props { }
interface State { }
class Anagram extends Component<Props, State> {
constructor(props: Props) {
super(props);
}
alphabetize(word: any) {
if (word) {
word = word.split('');
word = word.sort();
word = word.join('');
return word;
}
return;
}
getGroupedAnagrams(words: string[]) {
const anagrams = {};
words.forEach((word) => {
const sortedWord = this.alphabetize(word);
if (anagrams[sortedWord]) {
return anagrams[sortedWord].push(word);
}
anagrams[sortedWord] = [word];
});
return anagrams;
}
render() {
const words = ['map', 'art', 'how', 'rat', 'tar', 'who', 'pam', 'shoop'];
const groupedAnagrams = this.getGroupedAnagrams(words);
for (const sortedWord in groupedAnagrams) {
console.log(groupedAnagrams[sortedWord].toString());
}
return (
// Body elements
);
}
}
export default Anagram;
因此,第一个函数接收一个字符串并将其拆分并创建一个按字母顺序排列的字符串。然后,下一个函数接收一个字符串数组,然后对于数组中的每个单词,它通过第一个函数运行该单词,然后检查 anagrams 对象是否已经包含该“键”。如果确实如此,那么它将原始单词推入按字母顺序排列的单词的数组中。如果它不包含那个词,那么它会添加那个“key”。
我的问题是所有具有 [sortedWord] 的区域都返回错误:
Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{}'.
我做错了什么?在修复此错误之前,该项目将无法正确编译。
解决方案
'word' 属于'any' 类型。当您使用来自 alphabetize() 的返回并将其设置为遍历字谜的索引时。
anagrams[sortedWord]
将代码更改为此,它将起作用:
alphabetize(word: string) {
if (word) {
let words = word.split('');
words = words.sort();
word = words.join('');
return word;
}
return;
}
getGroupedAnagrams(words: string[]) {
const anagrams = {} as any;
words.forEach((word) => {
const sortedWord = this.alphabetize(word);
if (sortedWord) {
if( anagrams[sortedWord]){
return anagrams[sortedWord].push(word);
}
anagrams[sortedWord] = [word];
}
});
return anagrams;
}
推荐阅读
- javascript - 搜索时具有 2 个具有不同可过滤类别的输入字段的搜索表单
- python - 返回函数内部的值
- angular - angular2-query-builder - core.js:6456 错误类型错误:无法读取 QueryBuilderComponent.addRule 处未定义的属性“值”
- git - AWX 自定义凭据类型注入器似乎无法正常工作
- jgit - JGit 中“git rev-parse HEAD:directoryPath”的等价物是什么
- google-apps-script - 有没有办法为同一个 GSuite 域中的所有 GMail 插件共享一个 json 文件(或 blob)?
- sql - 使用 SQL 从大字符串中提取数据到表
- angular - 当任何服务使用角度响应缓慢时,对话框应自动关闭并抛出错误消息
- azure - jinja 模板嵌套循环仅在 ansible playbook 中给出最后一个循环值作为输出
- lidar - 是否可以让 iPhone 上的激光雷达扫描仪更准确?