2016-10-06 3 views
0

이 때 작동하는 다음과 같은 코드가 있습니다ES6 JS : CONST 수출을위한 구문은 일부 재귀

import sequelize from 'sequelize'; 
let A = sequelize.define('a', { 
    }, { 
    classMethods: { 
     someMethod(foo) { 
     return A.upsert(foo); 
     } 
    } 
    }); 

export default A; 

을하지만, 나는 같은 줄에 export default을 넣어 싶습니다 명확성을 위해 A의 정의 . 그러나 A의 일부분은 기본적으로 자신을 호출하기 때문에 올바른 구문이 무엇인지 알 수는 없습니다.

+0

someMethod의 목적에 저를 괴롭히지 마십시오. 이것은 예입니다. –

+0

간단히'this.upsert'를'A'없이 사용하는 것은 어떻습니까? – Bergi

+0

@Bergi "someMethod"의 내용은 내 포인트를 보여주는 예제 일뿐입니다. –

답변

2

당신은 지름길이 없습니다

export { A as default } 
const A = …; // whatever 

또는

let A; // I would avoid this 
export default A = …; 

는, export default에만 함수 나 클래스 선언과 함께 작동 할 수 있습니다.

+0

첫 번째 구문을 관리 할 수 ​​없습니다. 'ReferenceError : A is not defined'가 표시됩니다. 두 번째 구문은 분명히 작동합니다. 위의 예제에서 제가 제거하려고하는 것입니다. –

+0

정말요? 나는 그것이 합법적이라고 확신한다. 당신은 transpiler를 사용하고 있습니까? 그렇다면 버그 일 수 있습니다. – Bergi

+0

두 번째 구문과 관련해서는 아니요, 귀하의 질문과 같지 않습니다. 당신은'const A = ...;하고 있습니다. export default A; 거기 - 내 발췌 문장에서 "export default'"키워드가 정의 위에 있습니다. – Bergi

1

짧은 대답은 : 할 수 없습니다.

대답은 export default something 일 때 특정 값이 모듈에서 내보내지고 본질적으로 이름이 없음 (따라서 default 부분)을 지정하는 것입니다.

CommonJS와 달리 내보내는 항목에 대한 핸들이 없습니다. 당신이하고 싶은 것은 재귀 적으로 익명의 함수를 호출하는 것과 같습니다. 참조없이 어떻게 할 수 있습니까?