2015-05-02 242 views
1
快递使用的回调函数数组

我试图重新创建express routing example在打字稿在打字稿

我有...

/// <reference path='Scripts/typings/express/express.d.ts' /> 
import express = require('express'); 
var app = express(); 

var cb0: express.RequestHandler = function (req, res, next) { 
    console.log('CB0'); 
    next(); 
} 

var cb1: express.RequestHandler = function (req, res, next) { 
    console.log('CB1'); 
    next(); 
} 

var cb2: express.RequestHandler = function (req, res) { 
    res.send('Hello from C!'); 
} 

var arr: express.RequestHandler[] = [cb0, cb1, cb2]; 

app.get('/example/c', arr); 

第一个错误的打字稿编译器会引发我是'/example/c'Argument of type 'string' is not assignable to parameter of type 'RegExp' ......奇怪,因为在express.d.ts功能被定义为允许一个字符串,一个正则表达式......可是,好吧,我将其更改为new RegExp('/example/c')

然后它会向我抛出错误Argument of type 'RequestHandler[]' is not assignable to parameter of type 'RequestHandler'.。也奇怪,因为express.d.ts文件具有定义为允许数组的方法。

很新,在这里打字稿,这些都是一些神秘的错误信息......

+0

值得注意的是,'express.d.ts'来自DefinitelyTyped -https://github.com/borisyankov/DefinitelyTyped/blob/master/express/express.d.ts – TranquilMarmot

回答

2

更改您的段将最后一行,你应该罚款:

app.get('/example/c', cb0, cb1, cb2); 

你可以用”将一个RequestHandler数组传递给第二个参数....它是Typescript中一个称为“rest”参数的特殊类型的参数,类似于C#中的“params”。

+0

谢谢!这很有道理。 – TranquilMarmot