简体   繁体   English

Node.js,TypeScript,打字:如何使用异步库

[英]Nodejs, Typescript, typings: how to use async library

I'm trying to use the async library in Typescript; 我正在尝试在Typescript中使用异步库; I've installed the definition file that was provide by typings but I cannot use AsyncFunction: 我已经安装了通过键入提供的定义文件,但是我不能使用AsyncFunction:

///<reference path='typings/index.d.ts' />
'use strict';

import async = require( 'async' );

let functions : AsyncFunction<any>[] = [];

If I compile this extract I got this error: 如果我编译此摘录,则会出现此错误:

tsc test.ts --target es2015 --module system --removeComments --forceConsistentCasingInFileNames --noEmitOnError --noFallthroughCasesInSwitch --noImplicitAny --noImplicitReturns --noImplicitUseStrict --declaration --outfile a.js
test.ts(4,17): error TS2304: Cannot find name 'AsyncFunction'.

The async definition file that I use is this: https://raw.githubusercontent.com/types/npm-async/ff63908a70ec51b775d9a6b8afac9945b12fbe08/2/index.d.ts 我使用的异步定义文件是这样的: https : //raw.githubusercontent.com/types/npm-async/ff63908a70ec51b775d9a6b8afac9945b12fbe08/2/index.d.ts

What I'm doing wrong? 我做错了什么?

Thank you! 谢谢!

The interface AsyncFunction is not exported from that file. 接口AsyncFunction不会从该文件导出。 The only export is async as you can see from export = async; 唯一的出口是async的,你可以看到从export = async; on the last line. 在最后一行。

Fix 固定

Feel free to copy interface AsyncFunction<T> { (callback: (err?: Error, result?: T) => void): void; } 随意复制interface AsyncFunction<T> { (callback: (err?: Error, result?: T) => void): void; } interface AsyncFunction<T> { (callback: (err?: Error, result?: T) => void): void; } to a global.d.ts if you must use that annotation. interface AsyncFunction<T> { (callback: (err?: Error, result?: T) => void): void; }global.d.ts如果必须使用该注释)。

Run Two commends on project root folder 在项目根文件夹上运行两个命令

npm install async --save npm install async --save

npm i @types/async --save npm我@ types / async --save

import * as async from 'async';

async.auto({
    get_data: function(callback:any) {
        console.log('in get_data');
        // async code to get some data
        callback(null, 'data', 'converted to array');
    },
    make_folder: function(callback:any) {
        console.log('in make_folder');
        // async code to create a directory to store a file in
        // this is run at the same time as getting the data
        callback(null, 'folder');
    },
    write_file: ['get_data', 'make_folder', function(results:any, callback:any) {
        console.log('in write_file', JSON.stringify(results));
        // once there is some data and the directory exists,
        // write the data to a file in the directory
        callback(null, 'filename');
    }],
    email_link: ['write_file', function(results:any, callback:any) {
        console.log('in email_link', JSON.stringify(results));
        // once the file is written let's email a link to it...
        // results.write_file contains the filename returned by write_file.
        callback(null, {'file':results.write_file, 'email':'user@example.com'});
    }]
  }, function(err:any, results:any) {
    console.log('err = ', err);
    console.log('results = ', results);
  });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM