如何在 Typescript 中调用回调?
How call callback in Typescript?
我已经声明函数:
_translate(value: T, callback: (name: T) => T): void;
函数是:
public _translate(value: T, callback: T) {
if (!this.translate) {
callback(value);
}
}
如何调用(使用)它?我尝试了以下方法:
this._translate(value, function(data: T) {
console.log(data);
});
没用
试试这个:
// parameters:
// value, instance of T.
// callback: function, accepting parameter (name) that is instance of T and returns object that is instance of T.
// returns: Void.
public _translate(value: T, callback: (name:T) => T): void {
}
然后调用它:
this._translate(value, (data: T): T => {
return {};
});
您没有 return 在回调函数中输入任何内容,也没有尝试使用来自调用者的回调函数的结果...所以,它 看起来 就像你应该将 _translate
的声明更改为
_translate(value: T, callback: (name: T) => void): void;
这意味着 callback
参数应该是一个接受类型 T
并且不接受任何 return 任何输入 (void
) 的函数。然后,您需要更改实现签名以匹配:
public _translate(value: T, callback: (name: T) => void): void {
if (!this.translate) {
callback(value);
}
}
然后你应该能够调用 _translate()
作为你的 class 实例的方法,例如:
// class with _translate() method is MapperServiceArray<T>
const thingy = new MapperServiceArray<string>();
// call _translate on the object with a string and a callback that
// takes a string and does not return a value
thingy._translate("something", x => console.log(x.charAt(0)));
现在我看到你的 code snippet, I can suggest changes 使它编译(有点),但我真的不知道你想做什么。希望有所帮助。祝你好运。
我已经声明函数:
_translate(value: T, callback: (name: T) => T): void;
函数是:
public _translate(value: T, callback: T) {
if (!this.translate) {
callback(value);
}
}
如何调用(使用)它?我尝试了以下方法:
this._translate(value, function(data: T) {
console.log(data);
});
没用
试试这个:
// parameters:
// value, instance of T.
// callback: function, accepting parameter (name) that is instance of T and returns object that is instance of T.
// returns: Void.
public _translate(value: T, callback: (name:T) => T): void {
}
然后调用它:
this._translate(value, (data: T): T => {
return {};
});
您没有 return 在回调函数中输入任何内容,也没有尝试使用来自调用者的回调函数的结果...所以,它 看起来 就像你应该将 _translate
的声明更改为
_translate(value: T, callback: (name: T) => void): void;
这意味着 callback
参数应该是一个接受类型 T
并且不接受任何 return 任何输入 (void
) 的函数。然后,您需要更改实现签名以匹配:
public _translate(value: T, callback: (name: T) => void): void {
if (!this.translate) {
callback(value);
}
}
然后你应该能够调用 _translate()
作为你的 class 实例的方法,例如:
// class with _translate() method is MapperServiceArray<T>
const thingy = new MapperServiceArray<string>();
// call _translate on the object with a string and a callback that
// takes a string and does not return a value
thingy._translate("something", x => console.log(x.charAt(0)));
现在我看到你的 code snippet, I can suggest changes 使它编译(有点),但我真的不知道你想做什么。希望有所帮助。祝你好运。