无法导入 typescript 模型,属性 不会因类型 typeof 和引用错误而退出

Unable to import typescript models, Property does not exit on type typeof and reference errors

我正在尝试使用 NodeJS、Hapi 和打字稿创建微服务。我有一个基本路由设置 工作,但我无法使用我想要的目录结构创建和导入我的服务。该结构基本上是:

/server.ts
/tsconfig.json
/packages.json
/Services/
         /CarService.ts
         /BoatService.ts
/Models
         /Car.ts
         /Boat.ts
/Tests
/Bundle

我正在尝试将我的模型与我的业务逻辑分开。我的一项服务如下所示:

module Services {
    export class CarService {
        saveCar(data: any): boolean {
            return false;
        }
    }
}

但也看起来像这样:

class CarService {
    saveCar(data: any): boolean {
        return false;
    }
}
export {CarService}

我一直在尝试将此服务导入我的 server.ts

import CarService = Services.CarService;
let _carService = new CarService();

但是当我为第二个版本 carService

时它看起来像这样
import * as _carService from './Services/CarService';

我正尝试像这样使用 servcie:

server.route({
    method: 'POST',
    path: '/Cars/',
    handler: function (request:any, reply) {
        _carService.saveCar(request.payload);   // the error is here
        //_carService["saveCar"](request);
        reply("we did it!");
    }
});

第一种方法给我这个错误:

Property 'saveCar' does not exist on type 'typeof CarService'.

第二种方法在可视代码中编译,但给我这个错误:

ReferenceError: CarService is not defined

我的 tsconfig:

{
    "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "outDir": "bundle",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": true,
        "declaration": true
    },
    "filesGlob": [
        "./**/*/.ts"
    ]
}

很明显我的模块编译不正确。不知道错误是和tsconfig模块解析策略有关,还是和输出目录有关。我也摆弄过这些设置。我通过阅读文档知道模块解析策略首先在 /src/ 文件夹中查找,但有一次我有一个我认为的 rootDirs' array in my tsconfig.json that pointed to my/Models/and/Services/` 目录会解决这个问题。

您可以在CarService.ts中使用export default,然后在server.ts中导入class:

// Services/CarService.ts
export default class CarService {
    saveCar(data: any): boolean {
        return false;
    }
}

// server.ts
import CarService from './Services/CarService';
let _carService = new CarService();

另请参阅: