node.js - Exporterad variabel 'router' har eller använder namnet 'Router' från en extern modul men kan inte namnges


I den vanliga konstruktionen av att definiera nästlade routrar i flera filer, när man exporterar en router direkt med Typescript 2 och @types/[email -definitionen, genererar följande kod ett fel

error TS4023: Exported variable 'router' has or is using name 'Router' from external module 
         "[...]/node_modules/@types/express-serve-static-core/index" but cannot be named.

Exempel taget från basarats svar

import * as express from "express";

// import sub-routers
import * as adminRouter from "./admin/admin";
import * as productRouter from "./products/products";

let router = express.Router();

// mount express paths, any addition middleware can be added as well.
// ex. router.use('/pathway', middleware_function, sub-router);

router.use('/products', productRouter);
router.use('/admin', adminRouter);

// Export the router
export = router;

Svar #1

Lösningen är att uttryckligen annotera router-variabeln (TypeScript/issues/5711#issuecomment-161194656).

Följande kod kommer att fungera (observera let router: express.Router=express.Router())

import * as express from "express";

import * as adminRouter from "./admin/admin";
import * as productRouter from "./products/products";

let router: express.Router = express.Router();

router.use('/products', productRouter);
router.use('/admin', adminRouter);

// Export the router
export = router;