Comments 5
пример
{
"compilerOptions": {
"checkJs": false,
"allowJs": true,
"alwaysStrict": true,
"baseUrl": ".",
"downlevelIteration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"moduleResolution": "node",
"noEmitHelpers": true,
"noEmitOnError": true,
"removeComments": false,
"resolveJsonModule": true,
"strictBindCallApply": true,
"allowSyntheticDefaultImports": true,
"target": "esnext",
"jsx": "react",
"jsxFactory": "m",
"lib": [
"dom",
"esnext"
],
"paths": {
"flarum/components/*": [
"../../vendor/flarum/core/js/src/common/components/*",
"../../vendor/flarum/core/js/src/admin/components/*",
"../../vendor/flarum/core/js/src/forum/components/*"
],
"flarum/utils/*": [
"../../vendor/flarum/core/js/src/common/utils/*",
"../../vendor/flarum/core/js/src/admin/utils/*",
"../../vendor/flarum/core/js/src/forum/utils/*"
],
"flarum/helpers/*": [
"../../vendor/flarum/core/js/src/common/helpers/*"
],
"flarum/models/*": [
"../../vendor/flarum/core/js/src/common/models/*"
],
"flarum/*": [
"../../vendor/flarum/core/js/src/common/*",
"../../vendor/flarum/core/js/src/admin/*",
"../../vendor/flarum/core/js/src/forum/*"
]
}
},
"exclude": [
"vendor",
"storage",
"public",
"dist",
"node_modules"
]
}
При этом не ломается автокомплит и проверка типов в ide
При использовании webpack можно подключить www.npmjs.com/package/tsconfig-paths-webpack-plugin тогда алиасы будут работать для всех загрузчиков, использующих вебпаковский ресолвер путей.
Если я правильно понял статью, то все это затевается ради возможности не писать вот этот index.ts
import a from './modules/a';
import b from './modules/b';
import c from './modules/c/bobule.ts';
export default {
module: a,
dopule: b,
bobule: c
};
На самом деле, от этого файла есть большая польза – он показывает публичное API, а все что остается не экспортированным, считается приватным и использоваться напрямую не должно.
Во-вторых, содержимое этого файла можно сократить, используя синтаксис export .. from
export {default as module} from './modules/a';
export {default as dopule} from './modules/b';
export {default as bobule} from './modules/c/bobule.ts';
Честно говоря не очень понял, почему это динамический импорт, а не автоспорт проекта.
На конкретном примере, у меня есть модули с переводом приложения на разные локали, обычно это импортируемый js объект с парой тысяч ключей — строк перевода.
На последнем проекте я экспериментировал с тем, что по умолчанию испортился только модуль английского языка при инициализации приложения. В момент получения данных пользователя, если у него выбран не английский язык — динамически испортится модуль с нужным языком.
И если пользователь меняет язык, происходит проверка, загружен ли этот язык и если, происходит его динамический импорт.
Автозагрузка модулей с использованием динамического импорта