У меня есть некоторый ванильный код 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; }". Для типа> '{"A": строка не найдена подпись индекса с параметром типа' строка ': строка; }". ц (7053)
Я думал, что проблема в том, что мне нужен мой объектный ключ, чтобы быть строкой. Но преобразование их в строки не сработало.
DNATranscriber = {
"G":"C",
"C": "G",
"T": "A",
"A": "U"
}
Я очень смущен этим. Это говорит о том, что на моем объекте нет подписи индекса с типом строки. Но я уверен, что это так. Что я делаю неправильно?
Редактировать - я решил эту проблему, задав объекту DNATranscriber любой тип.
DNATranscriber: any = {
"G":"C",
"C":"G",
"T":"A",
"A":"U"
}