【问题标题】:Typescript csv-parse打字稿 csv 解析
【发布时间】:2017-01-22 02:55:28
【问题描述】:

我正在尝试使用我完全不熟悉的 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);

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

【问题讨论】:

  • 你想在这里做什么csvParse({delimiter: ','}, function(data, err)....
  • 我希望 myparser 为 csv 类型 Parser tat 为最后一行代码实现 writablestream。我也试过class myparser implements csvParse.CsvParser 但是我无法得到解析的数据
  • 这项工作new csvParse.CsvParse({delimiter: ','}, function(data, err)....
  • Only a void function can be called with the 'new' keyword

标签: csv typescript typescript-typings


【解决方案1】:

1。让 typescript 为您完成工作

不要因为方法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;

【讨论】:

    【解决方案2】:

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

    export = parse;
    

    到:

    export default parse;
    

    这让我可以访问解析函数并将其正确传递给 fs 流。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-21
        • 2017-04-12
        • 2019-04-16
        • 2019-08-18
        • 2018-09-07
        • 2016-10-27
        • 1970-01-01
        • 2019-01-13
        相关资源
        最近更新 更多