============main.js=============
import { A } from "./a.js";
import { B } from "./b.js";
let b = new B();
let a = new A(b);
console.log(a.get());
============a.js=============
export class A {
constructor(b) {
this.b = b;
}
get() {
return this.b.get();
}
}
============b.js=============
export class B {
get() { return 777; }
}
이거 777출력되는데
a.js에서 클래스b 임포트 할 필요가 없는거임?
이게 스크립트 언어의 위엄인가??
c++넘어와서 헷갈린다...
ㅇㅇ 없는 거면 런타임에 터짐
ㅇㅎ ㄳㄳ 그럼 타입스크립트에선 저런거 불가능하지, 임포트해야 한다던가
동적언어 정적언어차이아님?
이게 정확히 말하면, A 클래스 인스턴스의 get 메서드를 실행할 때, b 객체에서 get 속성을 찾고 그 값을 함수로서 호출하기 때문에 get 메서드 실행 당시에만 b.get 메서드가 존재하면 됨. 그래서 동적 타입 때문인가 이게...
정적 언어에서도 Object b로 매개변수를 지정하고 Object 인스턴스 메서드에 get 메서드를 추가하면 가능하지 않음? 대신에 추상 메서드로 만들어서 오버라이딩 가능하게 하면 다운 캐스팅 안 하고도 각 파생 클래스에서 재정의된 get 메서드를 호출할 수 있을 것 같은데?