web-dev-qa-db-ja.com

Typescriptcsv-解析

まったく新しい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解析を使用してコードを共有したりできますか?

6
niklas

これは単純なキャストの問題であり、すべてのコードが正しいので、TSだけがCsvParseから何が返されるかを知るのに役立ちます。定義ファイルを見ると、その戻り署名はvoid|parse.CsvParserです。したがって、TSにそれが実際にはCsvParser(無効ではない)であることを伝えるには、それをキャストするだけです。

var myParser:csvParse.CsvParser = csvParse({delimiter: ','}, function(data, err) {
    console.log(data);
}) as csvParse.CsvParser;
8
Ross Scott

別の問題が発生し、@ types/csv-parseのindex.d.tsを次の場所から変更する必要がありました。

export = parse;

に:

export default parse;

これにより、解析関数にアクセスして、それをfsストリームに適切に渡すことができました。

0
jajones