首页 > 解决方案 > 元素隐式具有“任何”类型,因为“任何”类型的表达式不能用于索引类型“{}” - 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 '{}'.

我做错了什么?在修复此错误之前,该项目将无法正确编译。

标签: reactjstypescript

解决方案


'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;
  }

最佳打字稿文档: https ://www.typescriptlang.org/docs/home.html


推荐阅读