2017-02-18 1 views
0
export class Helper { 
static forEach(array, callback) { 
    jQuery.each<string>(array, (index) => { 
     var item = callback({Item: array[index], Continue: true }); 
     return item.Continue; 
    }); 
} 
//how do I get item to Not be type of any? 
static Test() { 
    var array = [1, 2, 3, 4, 5]; 
    this.forEach(array, item => {   
     item. <--- No Intellisense prompt for Item or Continue here. 
    }); 
    } 
} 

콜백에서 볼 수있는 것처럼 콜백을 포함하는 도우미 클래스를 만들고 있는데 두 가지 속성이있는 개체를 보내고 있습니다. Test 함수는 그것이 어떻게 사용되는지와 내가하고 싶은 것을 보여준다.Visual Studio Intellisense에서 javascript 콜백의 속성을 표시하려면 어떻게합니까?

클래스를 정의하고 대신 전달하려고 시도했지만 Intellisense는 유형을 선택할 수 없습니다.

export class ItemContinue { 
    constructor(item) { 
     this.Item = item; 
    } 
    Item: any = null; 
    Continue: boolean = true; 
} 

export class Helper { 
static forEach(array, callback) { 
    jQuery.each<string>(array, (index) => { 
     var item = New ItemContinue(array[index]); 
     callback(item); 
     return item.Continue; 
    }); 
} 

답변

1

문제는 Helper.forEachcallback 매개 변수 타입 지정을하지 않는다는 것입니다. 따라서 암시 적으로 으로 처리됩니다.입니다. 또한 any은 모든 속성을 가질 수 있고 아무 것도 가질 수 없기 때문에 완료를 제공 할 수 없습니다.

이 위에서 코드를 비교 :

static forEachTyped<T>(array : T[], callback : ({Item: T, Continue: boolean}) => {Item: T, Continue: boolean}) 
{ 
    jQuery.each<string>(array, (index) => { 
     var item = callback({ Item: array[index], Continue: true }); 
     return item.Continue; 
    });   
}  

을 여기에, 나는 callback 매개 변수를 ({Item: T, Continue: boolean}) => {Item : T, Continue : boolean}의 유형을 제공했습니다. 이 형식은 {Item: T, Continue: boolean} 형식의 단일 인수를 사용하고 {Item: T, Continue: boolean} 형식의 값을 반환하는 함수의 서명입니다. 지금 콜백 함수 매개 변수 유형을 지정했기 때문에

, 인텔리이 기능을 위해 현재 운영 :

static Test3() { 
    var array = [1,2,3,4,5]; 
    this.forEachTyped<number>(array, (item) => { 
     item. // Should provide completion for Continue and Item properties. 
     return {Continue: item.Continue, Item: item.Item}; 
    }) 
} 

tsconfig.jsontrue에에서 당신이 noImplicitAny을 설정할 수 있습니다 유사한 문제를 방지하려면. 코드에서 내재적 인 any 유형을 지정할 때마다 오류가 발생하고 해당 값에 유형을 지정해야합니다.

관련 문제