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