의 다른 유형이라는 한 가지 유형의 인스턴스를 만드는 방법 : 다음과 같은 제품 클래스를 생성하는 데 사용OOP - 나는 두 추상적 제품 유형이 이유
type abstractProductA = {.
methodA: string
};
type abstractProductB = {.
methodB: int
};
:
class productA1 = {
pub methodA => "This is methodA of ProductA1";
};
class productB1 = {
pub methodB => 1;
};
나는 것을 추상적 인 공장에서 abstractProductA뿐만 아니라 abstractProductB의 인스턴스를 호출하려고합니다. 다음과 같은 뭔가 (구문 알아, 꺼짐) :
그래서type abstractFactory = {.
createProductA: abstractProductA,
createProductB: abstractProductB
};
그 나는 다음 클래스 사용하여 새 concreteFactory 만들 때 :
class concreteFactory1 = {
pub createProductA => (new productA1);
pub createProductB => (new productA1);
};
및 constructer :
let g = new concreteFactory1#createProductB;
Js.log (g#methodA);
을 컴파일러는 createProductB가 int가 아니라 (현재는 그렇지 않은) 문자열을 취하지 않는다고 불평해야합니다.
감사합니다. 어떤 제안이든지 환영합니다.
질문이 이해가 가지 않습니다. 이름이 다른 두 개의 메소드가있는 경우 컴파일러는 유형을 확인하기 전에 이름을 확인하고 그에 대한 불평을합니다. 그렇지 않은 경우 어떤 유형을 검사 할 것입니까? – glennsl
glennsl 정말 고맙습니다. 다시 잠깐 살펴보고 다시보고하겠습니다. –
@glennsl 질문이 업데이트되었습니다. concreteFactory1에 대한 createProductB 메소드가 문자열을 사용하지만 abstractFactory 유형을 따르는 경우 이상적으로 컴파일러에서 오류가 발생하면 createProductB는 문자열이 아닌 int 만 반환 할 수 있습니다. 그것은 내가 성취하려는 것입니다. 양해 해 주셔서 감사합니다. –