在打字稿中使用Express中的callback函数数组
我试图在打字稿中重新创build快速路由示例
我有…
/// <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);
typecript编译器在我的第一个错误是'/example/c'
说'/example/c'
Argument of type 'string' is not assignable to parameter of type 'RegExp'
…奇数,因为在express.d.ts
函数被定义作为允许一个string, 或一个正则expression式…但是,好吧,我把它改为new RegExp('/example/c')
然后它抛出错误Argument of type 'RequestHandler[]' is not assignable to parameter of type 'RequestHandler'.
对我。 也奇怪,因为express.d.ts
文件具有定义为允许数组的方法。
在这里打字稿很新,这些是一些神秘的错误信息…
改变你的代码片段的最后一行,你应该没问题:
app.get('/example/c', cb0, cb1, cb2);
你不能将一个RequestHandler数组传递给第二个参数….它是Typescript中一个特殊types的参数,叫做“rest”参数,类似于C#中的“params”。