2016-10-17 3 views
0
에서 매개 변수 및 특성을 가진 함수를 정의

I는 다음과 같습니다 기능이있어 :타이프

var myFunction = function (config) { 
    var example = this.property; // just illustrating that we use `this` 
} 
myFunction.__reference = 'foobar'; 

가 지금은 그것을 작성하는 중이 야를 엄격한 타이프 :

interface ExternalScope { 
    property: string; 
} 

interface ConfigObject { 
    name: string, 
    count: number 
} 

interface MyFunction { 
    (XHRLoader: this, cfg: ConfigObject): any; 
    __reference: string; 
} 

var myFunction = function (this: ExternalScope, config: ConfigObject): any { 
    var example = this.property; 
} 
myFunction.__reference = 'foobar'; 
위의 코드와

나는 다음과 같은 TypeScipt 오류 얻을 :

Property '__reference' does not exist on type '(this: ExternalScope: config: ConfigObject) => any

을 내 tsconfig.json의 관련 부분 :

"compilerOptions": { 
    "noEmitOnError": true, 
    "noImplicitAny": true, 
    "noImplicitReturns": true, 
    "noImplicitThis": true, 
    "strictNullChecks": true, 
    "noFallthroughCasesInSwitch": true, 
    "moduleResolution": "node", 
    "outDir": "./build", 
    "allowJs": false, 
    "target": "es5" 
}, 
+1

당신은 TS에'myFunction'이'MyFunction'의 인스턴스라고 말하지 않았습니다. – deceze

+0

어떻게하면됩니까? 나는 시도했다 : 기능 전에 . 하지만 내가 잘못한 점을 생각해보십시오. 오류가 더 많습니다. –

+0

'var myfunction : MyFunction = ...'이 가장 쉬울 것입니다. – deceze

답변

0

는 아마도이 도움이 될 수 있습니다

interface ExternalScope { 
    property: string; 
} 

interface ConfigObject { 
    name?: string, 
    count?: number 
} 

interface MyFunction { 
    (XHRLoader: this, cfg: ConfigObject): any; 
    __reference?: string; 
} 

var myFunction: MyFunction = function (this: ExternalScope, config: ConfigObject): any { 
    var example = this.property; 
} 

myFunction.__reference = 'foobar'; 

에도 myFunction: myFunction 비록 당신이 그것을 할당 할 필요 이상의 오류를 생성합니다.

는 단순히

var myFunction = function (this: ExternalScope, config: ConfigObject): any { 
    var example = this.property; 
} 

타이프 할 때 myFunction 변수의 유형을 추론하려고하고 할당 된 기능에 어떤 __reference 속성을 볼 수 없기 때문에, 유추 유형 중 하나를 포함하지 않습니다. 희망이 있습니다.

+0

원래 오류가 해결되기 전에 시도했지만 추가로 두 가지 오류가 발생했습니다. '유형'(This : ExternalScope, config : ConfigObject) : any '는'MyFunction '유형에 할당 할 수 없습니다. 속성 '__reference'가 유형 '(This : ExternalScope, config : ConfigObject) => any''에 누락되었습니다. 또한 다음과 같이 표시됩니다.'후속 변수 선언은 동일한 유형이어야합니다. 변수 'myFunction'은 'MyFunction'유형이어야하지만 여기에는 '(This : ExternalScope, config : ConfigObject) => any' '유형이 있습니다. –

+0

댓글에 오류가 무엇인지 이해하는 것은 실제로 조금 어렵습니다. 'Property __reference'가 type에 없다면'myFunction' 변수의 값을 정의 할 때 typescript가 정의에서 변수 '__reference'를 찾을 수 없었기 때문에 발생했는지 걱정됩니다. 내 솔루션에서 나는'__reference'가 선택적 변수이므로 오류가 발생하지 않는다고 선언했습니다. 원한다면 내 코드를 복사하여 [typescript playground] (http://www.typescriptlang.org/play/)에 붙여 넣고 실제로 오류가없는 것을 확인할 수 있습니다. –

+0

아, 그 추가 사항을 알지 못했습니까? 인터페이스에서. 적용된 것들 적용. 감사! –