无法使用 --out 将打字稿模块 (.ts) 文件连接到单个输出 (.js) 注释:获取错误

Unable to concat typescript modules (.ts) files into single output(.js) using --out Comment: Getting Error

我是 Typescript 的新手。我一直在尝试使用 tsc --out 命令连接打字稿模块。但是我遇到了一些错误。没有关于错误的信息。下面是过程,我累了。

.ts 文件我有:

Validation.ts:

module Validation {  
    export interface StringValidator {
       isAcceptable(s: string): boolean;
    }
}

ZipCodeValidator.ts:

/// <reference path="Validation.ts" />
module Validation {
    var numberRegexp = /^[0‐9]+$/;
    export class ZipCodeValidator implements StringValidator {
        isAcceptable(s: string) {
            return s.length === 5 && numberRegexp.test(s);
        }
    }
}

LettersOnlyValidator.ts:

/// <reference path="Validation.ts" />
module Validation {
    var lettersRegexp = /^[A‐Za‐z]+$/;
    export class LettersOnlyValidator implements StringValidator {
        isAcceptable(s: string) {
            return lettersRegexp.test(s);
        }
    }
}

Test.ts:

/// <reference path="Validation.ts" />
/// <reference path="LettersOnlyValidator.ts" />
/// <reference path="ZipCodeValidator.ts" />
// Some samples to try
var strings = ['Hello', '98052', '101'];
// Validators to use
var validators: { [s: string]: Validation.StringValidator; } = {};
validators['ZIP code'] = new Validation.ZipCodeValidator();
validators['Letters only'] = new Validation.LettersOnlyValidator();
// Show whether each string passed each validator
strings.forEach(s => {
    for (var name in validators) {
        console.log('"' + s + '" ' + (validators[name].isAcceptable(s) ? ' matches ' : ' does not match ') + name);
    }
});

tsc 命令:

tsc --out sample.js Test.ts

错误:

error TS6053: File 'ΓÇÉout.ts' not found.  
error TS6054: File 'sample.js' must have extension '.ts' or '.d.ts' 

请告诉我解决方法。还有一个,有什么方法可以在 gulp?

中连接 typescript 模块

我不会准确回答你,因为我不使用 tsc 命令。

但如果我是你,我会自动设置(例如 Gulp):

var gulp = require('gulp');
var typescript = require('gulp-typescript');
var sourcemaps = require('gulp-sourcemaps');
var addsrc = require('gulp-add-src');
var concat = require('gulp-concat');

gulp.task('tsc', function () {
    return gulp.src(['*.ts']) // all your ts files here (check the path)
        .pipe(sourcemaps.init())
        .pipe(typescript({
            sortOutput: true
        })) 
        .js // compile with tsc, ordered with _reference.ts
        .pipe(addsrc('external.js')) // add an external javascript file (if needed)
        .pipe(concat('app.js')) // concat all in one file
        .pipe(sourcemaps.write()) // generate the .map
        .pipe(gulp.dest('dist')); // write all in the dist folder
});

简而言之:

  • gulp-typescript : tsc 对于 gulp
  • gulp-sourcemaps : 允许您生成 .map(到 .ts 文件和 .js 文件之间的 link)
  • gulp-add-src : 允许您在管道中添加源文件。在此过程中推送一些 javascript 文件很有用。
  • gulp-concat : concat 所有文件

您似乎在 tsc --out 中使用了错误的短划线字符。
TypeScript 编译器会查看您的命令,而不是 "invoke tsc with file Test.ts and output to sample.js" 会看到类似 的内容"invoke tsc with 3 files: --out, sample.js, Test.ts"。然后它会查找这些文件并尝试编译它们。

要解决此问题,只需复制并粘贴带有正确短划线字符的命令:
tsc --out sample.js Test.ts