2016-10-26 4 views
0

Typescript를 배우려고하며 믹스 인 아이디어로 놀고있었습니다. 나는 다음 코드를 가지고있다. 어리 석다. 또한, 그것을 실행할 때 작동합니다. 그러나 42 줄의 myInput.sendKeys(name);은 "제공된 매개 변수가 대상의 서명과 일치하지 않습니다."라고 명시하고 있습니다. 그러나 나는 그것을 고치기 위해 무엇을 바꾸어야하는지 잘 모르겠습니다. 당신은 잘못 SendKeys을 구현믹스 인을 타이프 스크립트로 사용할 때 제공되는 매개 변수 오류

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

class SendKeys { 
    inputEl; 

    sendKeys(data: string) { 
     this.inputEl.value = data; 
    } 
} 

class InputClass implements SendKeys { 
    inputEl: HTMLInputElement; 

    constructor() { 
    } 

    sendKeys:() => void; 

    createInput(name: string) { 
     this.inputEl = document.createElement('input'); 
     this.inputEl.type = 'text'; 
     this.inputEl.setAttribute('id', name); 
     document.body.appendChild(this.inputEl); 
     document.body.appendChild(document.createElement('br')); 
    } 
} 
applyMixins(InputClass, [SendKeys]) 


let myInput = new InputClass(); 

let nameArr = ["frank", "Joe", "Laryy"]; 

for (let name of nameArr) { 
    myInput.createInput(name); 
    myInput.sendKeys(name); 
} 

See the code in action here

답변

1

TL; InputClasssendKeys의 서명을 수정 :

sendKeys: (data: string) => void; 

applyMixin 방법은 실행시에 실행된다. 컴파일시에

는 타이프 라이터의 컴파일러가 당신은 하나의 매개 변수 방법에 덜 매개 변수에서 sendKeys 방법의 서명을 변경 클래스 InputClass로 클래스 SenKeys을 혼합 가서 그렇게함으로써 것을 알고있는 방법이 없습니다 .

1

, 그것은해야한다 : 이것처럼

sendKeys: (data: string) => void; 

:

class InputClass implements SendKeys { 
    inputEl: HTMLInputElement; 

    constructor() {} 

    sendKeys: (data: string) => void; 

    createInput(name: string) { 
     this.inputEl = document.createElement('input'); 
     this.inputEl.type = 'text'; 
     this.inputEl.setAttribute('id', name); 
     document.body.appendChild(this.inputEl); 
     document.body.appendChild(document.createElement('br')); 
    } 
} 

(code in playground)

그리고 나서 오류가 사라집니다.

관련 문제