Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 元素隐式地具有一个';任何';类型,因为表达式的类型为';任何';can';t用于索引类型';{}';-反应字谜_Reactjs_Typescript - Fatal编程技术网

Reactjs 元素隐式地具有一个';任何';类型,因为表达式的类型为';任何';can';t用于索引类型';{}';-反应字谜

Reactjs 元素隐式地具有一个';任何';类型,因为表达式的类型为';任何';can';t用于索引类型';{}';-反应字谜,reactjs,typescript,Reactjs,Typescript,我一直在尝试扩展我的React功能,因此尝试将项目从Javascript转移到Typescript,但我遇到了一些似乎无法修复的错误 我做了很多阅读和搜索,但似乎不知道我做错了什么 其他组件和主应用程序都可以工作。只是这个组件 // Imports interface Props { } interface State { } class Anagram extends Component<Props, State> { constructor(props: Props) {

我一直在尝试扩展我的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;

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

'word'的类型为'any'。使用从字母顺序()返回并将其设置为遍历字谜的索引时

anagrams[sortedWord]
将代码更改为此,它将工作:

alphabetize(word: string) {
    if (word) {
      let words = word.split('');
      words = words.sort();
      word = words.join('');
      return word;
    }
    return;
}
typescript的最佳文档:

我必须将“word”设置为“any”,因为当我将其设置为“string”时,然后
word=word.split(“”)
返回错误
类型“string[]”不可分配给类型“string”
,并且类型“string”上不存在.sort和.join,因为您将单词的类型从字符串更改为数组。编辑了我的答案,以显示可以帮助完成的更改。现在错误不是整个对象,而是[sortedWord]。当前错误为类型“undefined”,不能用作索引类型。尝试在
if(sortedWord!==undefined){
中添加函数,但这只会再次导致“any”类型错误,并且
在类型{“
。谢谢你的帮助,有点像Typescript的傻瓜,但我觉得这可以改进我的编码。检查我的答案,我修改了“GetGroupedAngarms”函数,现在它应该可以工作了-main更改“const anagrams={}”作为任何一个;“非常感谢你。它工作起来很有魅力。经过投票,检查为正确答案。”。
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;
  }