Stack Overflow em Português Asked by Felipe Avelar on January 11, 2021
Eu tenho um arquivo index.ts
que é responsável por exportar todas os componentes da seguinte forma:
export * from './components/com1'
export * from './components/com2'
export * from './components/com3'
export * from './components/com4'
E uma organização de pastas
src
|---components
|---com1
|---com2
|---com3
|---com4
index.ts
A minha dúvida é se é possível eu verificar se o index.ts tem a exportação de todos os componentes dentro da pasta components nele… No caso, é possível verificar se todos os componentes tem um export dentro do index.ts através de testes?
Seguindo a sua lógica, a unica forma possivel (acredito) seria fazendo um "depara" de todos os componentes requeridos para que a aplicação rode.
Na arquitetura:
src
|---components
|---com1
--> export function com1();
|---com2
--> export function com4();
|---com3
--> export function com4();
|---com4
--> export function com4();
index.ts
Dentro de index se você fizer
export * from './components/com1'
export * from './components/com2'
export * from './components/com3'
export * from './components/com4'
console.log(Object.keys(this));
console.log(hasAllExportFunctionExists(this));
function hasAllExportFunctionExists(objectStruct: any) {
let exportedDeparaRequired = [
"com1",
"com2",
"com3",
"com4"
];
return Object.keys(objectStruct).every(v => exportedDeparaRequired.includes(v));
}
Com o seu tsconfig.json desta forma:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"lib": [
"dom",
"es6",
"es2017",
"esnext.asynciterable"
],
"sourceMap": true,
"outDir": "./build",
"moduleResolution": "node",
"removeComments": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noImplicitThis": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"baseUrl": "./"
},
"exclude": [
"node_modules"
],
"include": [
"./src/**/*.ts"
]
}
o tsc
irá compilar para algo parecido com isso:
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./components/com1"));
__export(require("./components/com2"));
__export(require("./components/com3"));
__export(require("./components/com4"));
console.log(Object.keys(this));
hasAllExportFunctionExists(this);
function hasAllExportFunctionExists(objectStruct) {
let exportedDeparaRequired = [
"com1",
"com2",
"com3",
"com4"
];
return Object.keys(objectStruct).every(v => exportedDeparaRequired.includes(v));
}
O que irá retornar no "node index.js"
['com1', 'com2', 'com3', 'com4' ]
true
Correct answer by Bruno Luiz K. on January 11, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP