programing

형식 지정 함수에 '이것'의 유형을 선언하는 것은?

prostudy 2022. 3. 9. 10:38
반응형

형식 지정 함수에 '이것'의 유형을 선언하는 것은?

나는 TypeScript에서 투덜거리는 작업을 쓰고 있다.나는 자바스크립트에 이미 가지고 있는 것을 번역하려고 해.

그래서 그룬트가 작업을 실행하면 함수를 실행한다.실행 시 그룬트가 설정됨thisjQuery가 과부하하는 것과 같은 방식으로 유용한 속성이 있는 객체로this당신이 작업하는 요소와 함께.다음과 같은 유용한 속성에 액세스할 수 있다.this.files;

grunt.registerMultiTask('clean', function() {
    this.files.forEach(function(f) { Delete(f); });
});

"모든 파일 삭제"this.files".

그러나, TypeScript에서, 나는 당신이 그 컴파일러를 'hint'할 수 있는지 모르겠다.this특별한 타입이라 난 무감각하지 않아TypeScript를 고려하도록 지시하는 방법this다른 타입이 되려고?

이제(TS 2.0에서) 함수의 값을 지정할 수 있다.this가짜매개 변수를 사용하여 타이핑하십시오(첫 번째 매개 변수가 되어야 함).

grunt.registerMultiTask('clean', function(this: SomeType) {
    //...
});

this매개 변수는 함수의 매개 변수 목록에서 가장 먼저 나타나는 가짜 매개 변수임

자세한 내용은 여기를 참조하십시오.

TypeScript를 다른 유형으로 간주하도록 지시하는 방법

당신은 그것을 할 수 있다.this매개 변수사용 사례에 대해 추가했다.this: {files:any[]}:

grunt.registerMultiTask('clean', function(this: {files:any[]}) {
    this.files.forEach(function(f) { Delete(f); });
});

이제 이것으로 가능하단 걸 알게 되었소.

class ClassyClass {
    prop = 'Juicy Strings'
}

function x( this: ClassyClass ) {
    console.log( this.prop )
}

나는 논쟁에서 부동산을 차지하지 않는 대안을 선호하게 되었다.

function x() {
    const that: ClassyClass = this

    console.log( that.prop )
}

나는 약간의 대답이 있다.나는 이것을 할 수 있다.

var self = <grunt.task.IMultiTask<string>>this;
self.files.forEach(function (f) {

});

잘 먹히네.화살표 기능을 쓸 수 없는 것과 같은 결과를 가져올 겁니다.

참조URL: https://stackoverflow.com/questions/28920753/declaring-the-type-of-this-in-a-typescript-function

반응형