Es6版本

//从根目录递归收集文件和目录信息
const fs = require('fs');
const path = require('path');

let collectObj = {
filesList: [],
dirsList: []
};

function readFileList(dir, collectObj) {
let {
filesList,
dirsList,
} = collectObj
const files = fs.readdirSync(dir);
files.forEach((item, index) => {
var fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
dirsList.push(fullPath);
readFileList(path.join(dir, item), collectObj); //递归读取文件
} else {

filesList.push(fullPath);
}
});
return collectObj;

}
collectObj = readFileList(__dirname, collectObj)

console.log(collectObj)

Typescript版本

//从根目录递归收集文件和目录信息
const fs = require('fs');
const path = require('path');
interface CollectObjType {
filesList: Array <String> ,
dirsList: Array <String> ,
}
let collectObj: CollectObjType = {
filesList: [],
dirsList: []
};

function readFileList(dir, collectObj): CollectObjType {
let {
filesList,
dirsList,
} = collectObj
const files:Array<String> = fs.readdirSync(dir);
files.forEach((item, index) => {
var fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
dirsList.push(fullPath);
readFileList(path.join(dir, item), collectObj); //递归读取文件
} else {

filesList.push(fullPath);
}
});
return collectObj;

}
collectObj = readFileList(__dirname, collectObj)

console.log(collectObj)