У меня есть строка, отформатированная в текстовом поле как разделенная запятыми, однако, когда я пытаюсь разделить ее, преобразовать ее в массив, чтобы перебирать их, я получаю сообщение об ошибке
Type 'string[]' is not assignable to type 'string'
Мое текстовое поле (с использованием ionic, но по сути просто текстовое поле при отображении
<ion-textarea type = "text" v-model = "CSVItems" placeholder = "e.g. chicken, rice, peas"></ion-textarea>
Данные/методы следующие (урезаны до необходимых для поста)
data() {
return {
CSVItems: "",
myResult: "",
};
},
methods: {
addItem: function() {
this.myResult = this.CSVItems.split(",");
},
Ошибка связана с попыткой сохранить массив строк в свойстве, объявленном как строка. Чтобы сообщить tslint о правильном типе, создайте экземпляр myResult
как массив строк:
data: () => ({
CSVItems: "",
myResult: [] as string[]
})
Кроме того, вы можете также обрезать перед назначением:
this.myResult = this.CSVItems.split(',').map(s => s.trim());
Функция разделения в javascript для строки возвращает массив. Чтобы превратить его в строку, вы можете использовать Array.join, чтобы снова сделать их строкой.
Бывший.
let CSVItems = "Hello,World!"
console.info(CSVItems.split(',')
// ["Hello", "World!"]
// Array.join's parameter is what to append with Ex [1,2,3].join("t") = "1t2t3"
console.info(CSVItems.split(',').join(' '))
// "Hello World!"
Если вы хотите, чтобы myResult был массивом, вы должны установить его как один
data() {
return {
CSVItems: "",
myResult: [], // Make [] not ""
};
},
methods: {
addItem: function() {
this.myResult = this.CSVItems.split(",");
},
split
возвращает массив. Похоже, что vuejs применяет тип.