2016-09-14 88 views
1

我想解析一個csv文件與打字稿,我是全新的。我無法讓解析器使用正確的類型。Typescript csv-parse

沒有分型一切都很簡單:

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解析打字前,並分享我r代碼?

+0

什麼是你想在這裏做'csvParse({分隔符:「」},功能(數據錯誤) ....'' – iberbeu

+0

我想讓myparser成爲csv類型的解析器,併爲Code的最後一行實現了writablestream。我也嘗試過'class myparser implements csvParse.CsvParser'但是後來我無法獲得解析的數據 – niklas

+1

這是否工作'new csvParse.CsvParse({delimiter:','},function(data,err)....' – iberbeu

回答

3

這只是一個簡單的投射問題,你所有的代碼都是正確的,它只需要TS幫助知道從CsvParse返回的內容。如果你看一下定義文件,它的返回簽名是void|parse.CsvParser。 所以告訴TS,它實際上是一個CsvParser(而不是void),只投它:

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