2015-02-27 2 views
1

У меня есть машинопись функция, которая принимает функциюПолучить значение из параметра функции тела

GetOne<T>(predicate: (e: T) => boolean): T; 

var user = GetOne<IUser>(a => a.Id === this.id); 

предикат ToString() возвращает "функция (а) {возвращение a.Id === _this.id;}"

Как я могу получить значение от «_this.id»?

Я хотел бы сделать breezejs Predicate из этой функции информаций ...

Благодаря

+0

Я не думаю, что есть способ получить значение this this.Id из предиката. Единственный способ, который я вижу здесь, - передать «breezejs Predicate» в качестве параметра предиката –

ответ

0

В функции стрелка Машинопись/ES6, это относится к экземпляру класса. Таким образом, вы можете просто использовать yourInstance.id для получения идентификатора.

0

Этот код

GetOne<T>(predicate: (e: T) => boolean): T; 

var user = GetOne<IUser>(a => a.Id === this.id); 

это равняется

GetOne<T>(predicate: (e: T) => boolean): T; 
var self = this; 
var user = GetOne<IUser>(function(a){ return a.Id === self.id }); 

если ваш вопрос, как вы можете получить это (например, пользователь) функции anyonym (а) ... это может быть вызывается с

predicate.call(user); 
// or 
predicate.apply(user); 

то есть переписать код, чтобы

GetOne<T>(predicate: (e: T) => boolean): T; 

var user = GetOne<IUser>(function(a){ return a.Id === this.id }); 
Смежные вопросы