无法使用 --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
我是 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 对于 gulpgulp-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