Teadercript - разделение вывода кода
-
13-12-2019 - |
Вопрос
Я пытаюсь Teadncript, и я нахожу это очень полезным.
У меня довольно большой проект, и я рассматривал, что переписал его, используя Typescript. Основная проблема здесь следующая:
Файл A.TS:
class A extends B {
// A stuff
}
.
Файл b.ts:
class B {
// B stuff
}
.
Если я компилирую A.ts с этой командой:
tsc --out compiledA.js A.ts
.
Я получу ошибку от компилятора, потому что он не знает, как угрозить «B» после продлений.
Итак, «решение» будет включать в ALTS (в качестве первой строки кода):
/// <reference path="./B.ts" />
.
Снова компиляция A.Ts с той же командой
tsc --out compiledA.js A.ts
.
приведет к compileda.js, содержащим код B.ts, и Atts. (который может быть очень приятно)
В моем случае мне нужно только компилировать код A.TS в файле Compileda.js, и я не хочу, чтобы вещи B.ts есть там.
Действительно, что я хочу:
- .
- tsc --out a.js a.ts=> Компиляция только тоновных вещей
- tsc --out b.js b.ts=> Компиляция только B.ts вещ
Я могу сделать это, удалив ключевое слово «продлен», но делает это, я потеряю большую часть знаменитой доброты.
Может кто-нибудь сказать мне, если есть способ сделать это?
Решение
После некоторых исследований я обнаружил, что проблема была введена аргументом в компиляторе.
@silent__ Необъемлющий решение работает нормально, если вы хотите иметь дело с модулями.Если вам нет, вам нужно использовать оператор Thanure (посмотрите на вопрос), а затем скомпилируйте файл «Main.ts» без аргумента Auth
Другие советы
--out
, вы получите ожидаемое поведение, то есть нет комбинации исходных файлов.Я покину этот альтернативное решение ниже, если это может помочь кому-то еще.
Я считаю, что вам придется использовать синтаксис внешнего модуля (Commonjs или AMD), чтобы сделать это.
Использование вашего примера:
import B = module("b")
class A extends B.B {
// A stuff
}
.
export class B {
// B stuff
}
.
Компиляция с tsc --out compiledA.js A.ts
.
Это приводит к расширению генеракодицетагкода, импортирующего генеракодицетагкод с использованием системы Commonjs.Полученные файлы выглядят так:
var __extends = this.__extends || function (d, b) {
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
}
var B = require("./b")
var A = (function (_super) {
__extends(A, _super);
function A() {
_super.apply(this, arguments);
}
return A;
})(B.B);
.
var B = (function () {
function B() { }
return B;
})();
exports.B = B;
.