수색…


통사론

  • BeetleGuy 클래스는 Climbs, Bulletproof {}를 구현합니다.
  • applyMixins (BeetleGuy, [Climbs, Bulletproof]);

매개 변수

매개 변수 기술
파생 코드 컴포지션 클래스로 사용하려는 클래스
baseCtors 컴포지션 클래스에 추가 할 클래스의 배열입니다.

비고

mixins에는 다음과 같은 세 가지 규칙이 있습니다.

  • 컴포지션 클래스를 작성할 때 extends 키워드가 아니라 implements 키워드를 사용합니다.
  • 컴파일러를 조용하게 유지하기 위해 일치하는 서명이 있어야합니다 (그러나 실제 구현이 필요하지 않습니다 - 믹스 인에서 그것을 얻을 것입니다).
  • 올바른 인수로 applyMixins 를 호출해야합니다.

믹스 인의 예

믹스 인을 만들려면 "비헤이비어"로 사용할 수있는 간단한 클래스를 선언하십시오.

class Flies {
    fly() {
        alert('Is it a bird? Is it a plane?');
    }
}

class Climbs {
    climb() {
        alert('My spider-sense is tingling.');
    }
}

class Bulletproof {
    deflect() {
        alert('My wings are a shield of steel.');
    }
}

그런 다음 이러한 비헤이비어를 컴포지션 클래스에 적용 할 수 있습니다.

class BeetleGuy implements Climbs, Bulletproof {
        climb: () => void;
        deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);

applyMixins 함수는 합성 작업을 수행하는 데 필요합니다.

function applyMixins(derivedCtor: any, baseCtors: any[]) {
    baseCtors.forEach(baseCtor => {
        Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
             if (name !== 'constructor') {
                derivedCtor.prototype[name] = baseCtor.prototype[name];
            }
        });
    });
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow