まったく新しいTypeScriptを使用してcsvファイルを解析しようとしています。パーサーを正しい型で動作させることができません。
入力しなくても、すべてが簡単です。
var fs = require('fs');
var parse = require('csv-parse');
var parser = parse({delimiter: ';'}, function(err, data){
console.log(data);
});
fs.createReadStream(__dirname+'/fs_read.csv').pipe(parser);
しかし、TypeScriptに関しては、エラーが発生し、タイピングをインストールしました dtから :
import * as csvParse from 'csv-parse';
import fs = require('fs');
var myParser:csvParse.CsvParser = csvParse({delimiter: ','}, function(data, err) {
console.log(data);
});
エラーが発生します
Type 'void | CsvParser' is not assignable to type 'CsvParser'.
誰かが私にヒントを与えたり、以前にTypeScriptでcsv解析を使用してコードを共有したりできますか?
これは単純なキャストの問題であり、すべてのコードが正しいので、TSだけがCsvParseから何が返されるかを知るのに役立ちます。定義ファイルを見ると、その戻り署名はvoid|parse.CsvParser
です。したがって、TSにそれが実際にはCsvParser(無効ではない)であることを伝えるには、それをキャストするだけです。
var myParser:csvParse.CsvParser = csvParse({delimiter: ','}, function(data, err) {
console.log(data);
}) as csvParse.CsvParser;
別の問題が発生し、@ types/csv-parseのindex.d.tsを次の場所から変更する必要がありました。
export = parse;
に:
export default parse;
これにより、解析関数にアクセスして、それをfsストリームに適切に渡すことができました。