打字稿csv-parse

时间:2016-09-14 10:25:51

标签: csv typescript typescript-typings

我正在尝试解析一个csv文件,其中包含我完全不熟悉的typescript。我无法让解析器使用正确的类型。

没有打字,一切都很简单:

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);

但是当涉及到打字稿我得到错误时,我安装了from 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-parse并分享他们的代码吗?

3 个答案:

答案 0 :(得分:8)

这只是一个简单的转换问题,所有代码都是正确的,它只需要TS帮助知道从CsvParse返回的内容。如果您查看定义文件,其返回签名为app.runMiddleware('/firstService/query',function(responseCode,body,headers){ // Your code here }) 。 所以告诉TS它实际上是一个CsvParser(而不是void)只是投了它:

void|parse.CsvParser

答案 1 :(得分:0)

我遇到了另一个问题,不得不改变@ types / csv-parse中的index.d.ts:

export = parse;

为:

export default parse;

这允许我访问解析函数并将其正确传递给fs流。

答案 2 :(得分:0)

1。让打字稿为您完成工作

不要解释由于方法csvParse而需要的类型:

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

2。使用原始的强制转换运算符<>

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

注意:这仅适用于.ts个文件。在.jsx文件中,您将看到错误“为...预期了相应的JSX关闭标记”

3。使用新的运算符as

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