저는 ES6 모듈을 작성하고 있지만 내 주 index.js에서 인수를 생략하는 방법은 모르지만 노출 된 방법으로 확인하십시오. ES6 모듈에 매개 변수를 선택적으로 전달합니다.
// lib/methods.js
import find from 'lodash.find';
import composedFetch from '../composedFetch.js';
export const getStatus = id => composedFetch(id)
.then(data => find(data.processOverview.processSteps, { status: `active` }))
.catch(e => console.log(e));
export const openingHours = (id, day) => {
if (!day) throw new Error(`Please specify a day`);
return composedFetch(id)
.then(data => {
const obj = find(
data.deliveryPoint.openingSchedules,
{ dayOfTheWeek: day.toUpperCase() }
);
return obj.openingHours[0];
})
.catch(e => console.error(e));
};
내 방법은 매개 변수 일 필요 볼 수 있듯이
// index.js
import {getStatus, openingHours} from './lib/methods.js';
export default ID => {
if(!ID) throw new Error(`An ID needs to be passed`);
return {
getStatus: getStatus(ID),
openingHours: openingHours(ID),
};
};
.
import bpost from 'bpost';
const pkg = bpost('someIDhere');
const status = pkg.getStatus();
const openingHours = pkg.openingHours('monday');
나는 아직 나머지 연산자와 기본 매개 변수하지만 운이 일을 시도 : 당신이 먼저 ID로 인스턴스화 다음 방법을 사용할 수 있도록 모듈이 작동해야하는 방식이다. 내 테스트는 여전히이 테스트 코드로 하루 오류를 던지며 (이 문제가 해결되면 작동 함)
// methods.test.js
import bpost from '../src/index.js';
describe(`Method: global.bpost`,() => {
it(`should show the available methods for the module`,() => {
expect(() => bpost(`someIDhere`)).not.toThrow();
});
});
미리 감사드립니다.
비록 초기 값이 지정되지 않은 경우에도이 함수를 사용하기를 원하기 때문에 초기 값은 if (! day) 조건을 throwing error가 아닌 다른 값으로 변경하는 것입니다. 아마도 어떤 종류의 외관은 명백한 결과를 줄 것이다.이 간단한 생각을 한번 보자. http://www.dofactory.com/javascript/facade-design-pattern – eloleon
@eloleon hmm 대신 console.error를 사용하여 변경할 수 있지만 요일을 지키지 않으면 함수가 실행되기를 원하지 않습니다. – thibmaek
당신이 이것을 찾고 있다고 생각합니다. http://stackoverflow.com/questions/36314/what-is-currying – duivvv