想請問一下大大們這種函數簽章要如何實現?
fs.readdir(path[, options], callback)
function LS(userDir, path='/' ,cb) {
fs.readdir(userDir+path, (err, files)=> {
cb(files);
})
}
我想要寫一個函數來包裝readdir, 但path那個參數是option的,如果沒傳就默認'/'
但cb那個簽章是必要的。但我沒辦法這樣用:
LS(userDir, ()=> {
// call back
);
// 或
LS(userDir, '/temp', ()=> {
// call back
});
不然你可以考慮這樣寫
const fs = require('fs');
const LS = ({ userDir, path, cb }) => {
const _userDir = userDir;
const _path = path || '/';
const _cb = cb;
fs.readdir(`${_userDir}${_path}`, (err, files) => {
if (err) {
throw new Error(err);
}
_cb(files);
});
};
const cb = (input) => {
console.log(input);
};
LS({ userDir: '', cb });
確實這樣解很合理w
但還是想問問readdir可以做到那樣是因為typeSript的特性嗎?
應該算吧
typescript 支援 overload
但是 typescript 也是編譯成 javascript
所以也要有辦法編譯成 javascript 看得懂的東西
上面兩位大大說的檢查 type 跟 argument 的數量可以試試
好的 謝謝 >w<