TypeScript
믹스 인
수색…
통사론
- 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