我正在尝试用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错误时,我安装了typingsfrom 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'.

有谁能给我一个提示,或者用csv解析之前的typescript并分享他们的代码吗?

最佳答案

这只是一个简单的转换问题,您的所有代码都是正确的,它只需要知道从csvparse返回的内容的帮助。如果您查看定义文件,它的返回签名是void|parse.CsvParser
所以要告诉TS它实际上是一个CSVParser(而不是void),只需将其转换为:

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

10-07 21:26