gpt4 book ai didi

javascript - typescript :在类型 'string' A 上找不到参数类型为 '{ "的索引签名“:字符串;}

转载 作者:可可西里 更新时间:2023-11-01 01:38:29 26 4
gpt4 key购买 nike

我有一些普通的 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

这按预期工作。我现在想将其转换为 typescript 。

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

但我收到以下错误。

Element implicitly has an 'any' type because expression of type 'string' >can't be used to index type '{ "A": string; }'. No index signature with a parameter of type 'string' was found on type >'{ "A": string; }'.ts(7053)

我认为问题是我需要我的对象键是一个字符串。但是将它们转换为字符串没有用。

DNATranscriber = {
"G":"C",
"C": "G",
"T": "A",
"A": "U"
}

我对此很困惑。它说我的对象上不存在具有字符串类型的索引签名。但我确信它确实如此。我做错了什么?

编辑 - 我通过给 DNATranscriber 对象一个类型来解决这个问题。

DNATranscriber: any = {
"G":"C",
"C":"G",
"T":"A",
"A":"U"
}

最佳答案

此外,您还可以这样做:

(this.DNATranscriber as any)[character];

编辑。

强烈建议您使用正确的类型而不是any 转换对象。将对象转换为 any 只能帮助您在编译 typescript 时避免类型错误,但不能帮助您保持代码的类型安全。

例如

interface DNA {
G: "C",
C: "G",
T: "A",
A: "U"
}

然后你像这样转换它:

(this.DNATranscriber as DNA)[character];

关于javascript - typescript :在类型 'string' A 上找不到参数类型为 '{ "的索引签名“:字符串;},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com