我一直在倾注StackOverflow帖子和多篇博文,但似乎无法找到答案. 我正在使用VS Code,nodejs,typescript和gulp. 当我将所有模块控制器代码放入一个文件时,如下所示: controllers.ts module Controllers {
我正在使用VS Code,nodejs,typescript和gulp.
当我将所有模块控制器代码放入一个文件时,如下所示:
<controllers.ts> module Controllers { export class Api { get(controllerName:string):IController { } } } module Controllers { export interface IController { performAction(actionName:string):any; } } module Controllers { export class ControllerBase implements IController { performAction(actionName:string):any { } } } module Controllers { export class UserController extends ControllerBase { } } export = Controllers;
Gulp能够编译它并且nodejs正确运行它.
当我把它分成多个文件时,我似乎无法编译它:
<controllers.ts> module Controllers { export class Api { get(controllerName:string):IController { } } } module Controllers { export interface IController { performAction(actionName:string):any; } } module Controllers { export class ControllerBase implements IController { performAction(actionName:string):any { } } } export = Controllers; <UserController.ts> module Controllers { export class UserController extends ControllerBase { } }
我试过添加
/// <reference path="./controllers.ts" />
到我的UserController.ts文件的顶部.当我这样做时,它仍然找不到ControllerBase.
我试过了
export class Controllers.UserController extends Controllers.ControllerBase
并且它不喜欢UserController之前的控制器,但是如果我删除那些控制器并使它看起来像这样:
export class UserController extends Controllers.ControllerBase
那显然它将UserController放在一个不同的模块中.
另外,像这样导入它:
import Controllers = require("./controllers");
似乎也没有帮助.我不知道还有什么可以尝试的.任何帮助将不胜感激.这似乎不应该是可以实现的.
在考虑做这样的事情时,似乎有两个问题.>您选择的编码工具中的智能感知
>编译.
对于我的场景,intellisense不是一个问题,因为对于扩展基类的类,我不需要对基类中的函数进行智能感知.编译是我的大斗争.这是我提出的解决方案.我不喜欢它,但似乎确实有效.
var gulp = require('gulp'); var concat = require('gulp-concat'); var insert = require('gulp-insert'); var ts = require('gulp-typescript'); var del = require('del'); var tsOptions = { noImplicitAny: true, target: 'ES5', module: 'commonjs' }; gulp.task('clean', function(done) { del(['./dest'], done); }) gulp.task('compile-controllers', function() { return gulp.src(['./src/controllers.ts', './src/*.ts']) .pipe(concat('controllers.ts')) .pipe(insert.append('export = Controllers;')) .pipe(ts(tsOptions)) .js .pipe(gulp.dest('dest/server')); });