-
글쓴이글
-
2021년 12월 29일 03:28 #23175
frysweet참가자선생님 인터페이스는 단지 타입일 뿐인데,
ex. 변수1 : 인터페이스1 => 이런식으로 이렇게 선언해놓고 이 변수 타입에 선언되어 있는 값을 꺼내서 사용하기도 하고,
새로운 변수에 할당해서 사용할 수 있는 이유에 대해 궁금합니다.
변수 1 : 인터페이스1 은 타입만 할당되어 있지 전혀 구현되어 있지 않구요.
예시를 보면, 이렇게 import 한 'EditorModules' 인터페이스를 변수 'public moduleInstances' 의 타입으로 선언해놨는데요.
1.
import 해온 인터페이스 'EditorModules' 타입인 변수 'this.moduleInstances;' 를,
const = { BlockManager, Caret } 에 할당해 놓았는데요.
변수 안에 있는 인터페이스 오브젝트의 값을 const BlockManager, Caret 에 구조분해 할당을 한다? 고 생각해봐도,
순서가 안맞는데,
( 인터페이스 EditorModules 안에 BlockManager, Caret 이 오브젝트 키로 들어가있지만, 구조분해 순서가 안맞습니다.)
이렇게 할당하면, 해당 const = { BlockManager, Caret } 에는 어떤 값이 할당되게 되나요?2.
오버라이딩 되어 있나 살펴 봤는데, 엔트리 파일의 모듈이 이 모듈을 그대로 가져다 쓰는거라 오버라이딩은 아닌것 같구요.
구현이 안된 인터페이스 타입의 변수인데,
어떻게 import 해온 인터페이스 안에 선언되어 있는 '키값'을 사용할 수 있는지 이해가 안갑니다..ㅠㅠ=> 타입으로 선언되는 '인터페이스' 모듈에는 이렇게 키 : 값(클래스) 식으로 오브젝트가 만들어져 있습니다.
각 키값은 import 해온 클래스 들이구요.질문을 요약하자면,
1. 인터페이스 타입의 변수1 (ex. this.moduleInstances) 을 새로운 변수2에 할당한 상태인데,
ex 변수 2 { a, b } = 변수1 : 인터페이스1 => 새로 할당한 '변수2' { a, b }에 각각 '어떤 값'이 할당되는 것인지,
=> 91 번째줄 const { BlockManager, Caret } = this.moduleInstances;2. 인터페이스 타입의 '변수1'을 구현하지 않은 상태로 사용하는데 ,
=> 예시 코드의 100 번째 줄의 'this.moduleInstances.UI.removeLoader();' 처럼
인터페이스 안 오브젝트의 { key : value (클래스) } 의 value 값인 클래스를 키값을 통해 사용할 수 있는 이유에 대해 이해가 어렵습니다.
예시 코드 링크 입니다 :
해당 모듈 파일 => https://github.com/codex-team/editor.js/blob/next/src/components/core.ts
인터페이스 모듈 => https://github.com/codex-team/editor.js/blob/next/src/types-internal/editor-modules.d.ts
모듈을 가져다 쓰는 엔트리 모듈파일 => https://github.com/codex-team/editor.js/blob/next/src/codex.ts
2021년 12월 29일 10:02 #23182
codingapple키 마스터/**
* Make modules instances and save it to the @property this.moduleInstances
*/
private constructModules(): void {this.moduleInstances[Module.displayName] = new Module({
config: this.configuration,
eventsDispatcher: this.eventsDispatcher,
});
밑에 보니까 이런 함수가 있네요 이 함수 실행되면 this.moduleInstances 에 뭐가 들어가나봅니다
이 함수가 실행되면 쓸 수 있겠군요
-
글쓴이글
- 답변은 로그인 후 가능합니다.