我正在尝试解析一个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并分享他们的代码吗?
答案 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)
不要解释由于方法csvParse
而需要的类型:
var myParser = csvParse({delimiter: ','}, function(data, err) {
console.log(data);
});
<>
var myParser:csvParse.CsvParser = <csvParse.CsvParser> csvParse({delimiter: ','}, function(data, err) {
console.log(data);
});
注意:这仅适用于
.ts
个文件。在.jsx
文件中,您将看到错误“为...预期了相应的JSX关闭标记”
as
var myParser:csvParse.CsvParser = csvParse({delimiter: ','}, function(data, err) {
console.log(data);
}) as csvParse.CsvParser;