Я пишу небольшую библиотеку для некоторых простых компонентов, чтобы выучить немного TypeScript
, но есть проблема при сборке библиотеки, когда явно не создается экземпляр класса.
Я хочу иметь возможность, используя строку, создать экземпляр класса. Сразу после определения класса я добавляю имя класса и конструктор к объекту.
/**
* Component class store
*/
let classes: { [key: string]: IConstructable<IComponent> } = {};
export function addToDynamic(cls: IConstructable<IComponent>) {
classes[cls.name] = cls;
}
/**
* A component
*/
export class Container extends BaseComponent implements IComponent {
items: object[];
constructor() {
super();
}
}
addToDynamic(Container);
Следующий код не работает, потому что Container
не создан:
import { Container } from './gui/container';
import { DynamicClass } from './gui/base';
let c2:Container = new DynamicClass('Container') as Container;
c2.add(document.body);
Однако в сборку будет включен Container
:
import { Container } from './gui/container';
import { DynamicClass } from './gui/base';
let c1:Container = new Container();
let c2:Container = new DynamicClass('Container') as Container;
c2.add(document.body);
Мой webpack.config.js
:
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/index.ts',
devtool: 'inline-source-map',
devServer: {
contentBase: './dist'
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}]
},
resolve: {
extensions: [ '.ts', '.js' ]
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
library: 'sugar-ant-lib',
libraryTarget: 'umd'
}
};
Вопрос в том, как включить все файлы в src
?
Обновление
Добавление строки ниже к моему index.ts
добавляет файл в сборку.
import './gui/container';
Также я понял, что это может иметь отношение к директивам tripple-slash , но я пока не знаю.