我目前正在使用TypeScript 0.9.0.1,并在进行AJAX调用时使用JQueryPromise接口。我刚刚开始实现新的泛型功能,并注意到在调用在被调用函数中设置类型的泛型函数时,我没有获得intellisense。
我想调用userService.GetRole()并返回JQueryPromise< Role >类型,但是在这个场景中它不会.它返回JQueryPromise< any >,并且intellisense在“角色”变量上不工作:
/// <reference path="../declarations/jquery.d.ts" />
interface Role {
Id: number;
Name: string;
}
module Services {
export class UserService {
//Non-Generic Call
GetRole<Role>(): JQueryPromise<Role>{
return $.get('/url');
}
}
}
$(function () {
var userService = new Services.UserService();
//GetRole() is returning JQueryPromise<any> and not JQueryPromise<Role> as declared
userService.GetRole().then((role) =>
//role is inferred as type 'any' and not 'Role' so intellisense does not work
console.log(role.Name)
);
});下面给出了intellisense,但是我必须输入userService.GetRole<角色>(),而不仅仅是userService.GetRole():
/// <reference path="../declarations/jquery.d.ts" />
interface Role {
Id: number;
Name: string;
}
module Services {
export class UserService {
//Generic Call
GetRole<T>(): JQueryPromise<T> {
return $.get('/url');
}
}
}
$(function () {
var userService = new Services.UserService();
userService.GetRole<Role>().then((role) =>
//Intellisense now works but I have pass the type '<Role>' every call
console.log(role.Name)
);
});所以我的问题是:是否有一种方法来调用userService.GetRole().then((角色) ...etc )。将“角色”参数识别为“角色”类型?
发布于 2013-07-14 06:43:26
取决于希望泛型变为活动的级别。你可以把它移到你的课堂上:
module Services {
//Generic Class
export class UserService<T> {
GetRole(): JQueryPromise<T> {
return $.get('/url');
}
}
}
$(function () {
var userService = new Services.UserService<Role>();
// You don't need role in every call anymore
userService.GetRole().then((role) =>
console.log(role.Name)
);
});https://stackoverflow.com/questions/17636925
复制相似问题