Definitelytyped: @ рдкреНрд░рдХрд╛рд░/рдПрдХреНрд╕рдкреНрд░реЗрд╕, @ рдкреНрд░рдХрд╛рд░/рдПрдХреНрд╕рдкреНрд░реЗрд╕-рд╕рд░реНрд╡-рд╕реНрдерд┐рд░-рдХреЛрд░ - рдореВрд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред 'рдкреНрд░рдХрд╛рд░ рдХрд╛ рддрд░реНрдХ' "/ api"' рдкреНрд░рдХрд╛рд░ 'RequestHandlerParams' рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрдмрдВрдЯрд┐рдд рдирд╣реАрдВ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЕрдЧре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: DefinitelyTyped/DefinitelyTyped

  • [x] рдореИрдВрдиреЗ @types/express рдФрд░ @types/express-serve-static-core рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реБрдИрдВред
  • [x] рдореИрдВрдиреЗ tsc рдХреЗ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред https://www.npmjs.com/package/typescript
  • [ ] рдореЗрд░рд╛ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ рдЬреЛ StackOverflow рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИред (рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ)ред
  • [x] [рдЙрд▓реНрд▓реЗрдЦ] (https://github.com/blog/821-mention-somebody-the-re-notified) рд▓реЗрдЦрдХ ( Definitions by: рдореЗрдВ index.d.ts ) рддрд╛рдХрд┐ рд╡реЗ рдХрд░ рд╕рдХреЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.

    • рд▓реЗрдЦрдХ: @borisyankov

рдХреЛрдб:

import * as express from "express";
import { Request, Response } from "express";
import * as bodyParser from "body-parser";
import * as api from "./routes/api";

namespace my_api  {
    let app = express();
    let port: number = process.env.port || 3000;
    app.use(bodyParser.json());
    app.use('/api', api);
    app.get('/', (req: Request, res: Response) => {
           res.send("Hello world");
    });

    app.listen(port, () => console.log(`Express app listening on port ${port}`);
}

рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп:

ERROR in /path/to/server.ts (25,11): Argument of type '"/api"' is not assignable to parameter of type 'RequestHandlerParams'.

рд╕рдореНрдмрдВрдзрд┐рдд:
рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрдПрд╕/рдПрдХреНрд╕рдкреНрд░реЗрд╕#3263

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ @natejgardner
рдореБрдЭреЗ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ d.ts рд▓рд┐рдЦрдХрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рддрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рддрдм рдореИрдВ рдЗрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдореЗрдВ рдЖрдпрд╛ ' RequestHandlerParams' рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ
рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЧрдВрднреАрд░ рд╣реИ рд▓реЗрдХрд┐рди * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдУрд╡рд░рд▓реЛрдбреЗрдб рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ @natejgardner
рдореБрдЭреЗ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ d.ts рд▓рд┐рдЦрдХрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рддрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рддрдм рдореИрдВ рдЗрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдореЗрдВ рдЖрдпрд╛ ' RequestHandlerParams' рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ
рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЧрдВрднреАрд░ рд╣реИ рд▓реЗрдХрд┐рди * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдУрд╡рд░рд▓реЛрдбреЗрдб рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@natejgardner рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдПрдкреА рд░рд╛рдЙрдЯрд░ рдореЗрдВ рд╣реИ:

рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ("./ рдорд╛рд░реНрдЧ/рдПрдкреАрдЖрдИ" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ):

import { Router } from "express";
const router: Router = Router();
router.get("/", getInfo);
// ...other routes...
export = router;

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИ .... рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ :)

рдХреНрдпрд╛ рдпрд╣ рддрдп рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ArtemZag picture ArtemZag  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

demisx picture demisx  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jrmcdona picture jrmcdona  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jbreckmckye picture jbreckmckye  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

variousauthors picture variousauthors  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ