【发布时间】:2019-10-27 08:02:45
【问题描述】:
我有一些普通的 javascript 代码,它接受字符串输入,将字符串拆分为字符,然后将这些字符与对象上的键匹配。
DNATranscriber = {
"G":"C",
"C": "G",
"T": "A",
"A": "U"
}
function toRna(sequence){
const sequenceArray = [...sequence];
const transcriptionArray = sequenceArray.map(character =>{
return this.DNATranscriber[character];
});
return transcriptionArray.join("");
}
console.log(toRna("ACGTGGTCTTAA")); //Returns UGCACCAGAAUU
这按预期工作。我现在想将其转换为打字稿。
class Transcriptor {
DNATranscriber = {
G:"C",
C: "G",
T: "A",
A: "U"
}
toRna(sequence: string) {
const sequenceArray = [...sequence];
const transcriptionArray = sequenceArray.map(character =>{
return this.DNATranscriber[character];
});
}
}
export default Transcriptor
但我收到以下错误。
元素隐含地具有'any'类型,因为'string'类型的表达式>不能用于索引类型'{“A”:string; }'。 在 type >'{ "A": string; 上找不到带有“string”类型参数的索引签名。 }'.ts(7053)
我认为问题在于我需要我的对象键是一个字符串。但是将它们转换为字符串不起作用。
DNATranscriber = {
"G":"C",
"C": "G",
"T": "A",
"A": "U"
}
我对此感到很困惑。它说我的对象上不存在具有字符串类型的索引签名。但我确信确实如此。我做错了什么?
编辑 - 我通过给 DNATranscriber 对象赋予任何类型来解决这个问题。
DNATranscriber: any = {
"G":"C",
"C":"G",
"T":"A",
"A":"U"
}
【问题讨论】:
-
这不是答案,但你忘了从
toRna返回值 -
你的打字稿版本是什么?我没有收到任何错误stackblitz.com/edit/angular-kupcve`
-
当然,输入
any即可解决问题,就像从烟雾探测器中取出电池修复潜在火灾一样。 -
你的比喻有点笨拙,但我仍然认为你的观点非常有道理。我会考虑这个并尝试提出更好的解决方案。
-
哎呀,你在比喻中击中了我。无论如何,this 是我的做法
标签: javascript typescript