我正在尝试用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;