我有这个功能:
elem = (arr, property, num) => {
arr.forEach(function (elem, index) {
if (elem[property] === num)
return elem;
})
};
我是否可以通过某种方式使用泛型,因此可以使用type
调用该函数,以便返回特定的type
例如:
exam = <IExam> elem(exams, 'abc', 3);
我认为这会有效,但我想知道我是否可以以某种方式将IExam
传入函数。
答案 0 :(得分:1)
这可能是答案(有a working example)
interface IExam {
ID: number;
}
var arr: any[] = [{}, {ID:1}, {ID: 2}];
var elem = <T>(arr, property, num) : T => {
var result: T = null;
arr.forEach(function (elm, index) {
if (elm[property] === num)
result = <T>elm;
return;
})
return result;
};
var myResult: IExam = elem<IExam>(arr, "ID", 1);
我们可以在这里测试(查看playground, click run):
var resultPre = document.createElement('pre');
resultPre.innerText = JSON.stringify(myResult);
document.body.appendChild(resultPre);