Я анализирую CSV-файл:
let lines = csvData.split(/\r\n|\n/);
let headers = lines[0].split(',');
for (let i = 1; i < lines.length; i++) {
let values = lines[i].split(',');
let item = {};
for (let j = 0; j < headers.length; j++) {
item[headers[j]] = values[j];
}
items.push(item);
}
return items;
Я получаю его данные.Тем не менее, данные все строки.Я хочу передать их в JSON и сделать так, чтобы они не имели типа, поэтому я могу передать их в переменные разных типов.Я не хочу использовать parseInt / parseFloat напрямую, потому что я не знаю конкретный тип каждой переменной.
Однако каждый раз, когда я передаю значения в JSON, все они являются строками, например "1234", а не 1234. Обычно я могу передавать данные JSON в класс без типов, но на этот раз я преобразую csvData в JSON, все данные JSON являются строками.Я думаю, это потому, что функция split делает ее строкой?
Необязательно: я могу передать тип в эту функцию, например readCsvFile<T>(csvData)
, могу ли я сделать что-то вроде:
if (typeof(T[headers[j]]) == 'number') {
item[headers[j]] = parseFloat(values[j]);
} else {
item[headers[j]] = values[j];
}
Но T [header [j]] не проходит компиляцию.