将一个泛型函数作为一个回调函数传递给Typescript

时间:2017-08-17 17:09:59

标签: typescript

我试图保留回调的参数的类型信息,其中回调是通用的:

function Foo<Template>(argument: Template) {
  // Do something with argument
}

function Bar(callback: Function) {
  callback('something')
}

let x = Bar( Foo<String> )

这看起来不像有效的typescript语法。有什么办法吗?

2 个答案:

答案 0 :(得分:4)

在这里扩展Rodrigo的答案。如果你有一个泛型函数:

function doSomething<T>(t: T): void {
    console.log("oh " + t);
}

您可以按如下方式定义函数的类型:

type Handler = <T>(t: T) => void;

然后您可以使用类型Handler作为函数参数:

function thisFirst(callback: Handler) {
  callback<string>('boink');
}

thisFirst(doSomething)

答案 1 :(得分:0)

Function是任何功能。尝试指定回调。

function Foo<Template>(argument: Template) {
  // Do something with argument
}

function Bar(callback: { (argument: string) }) {
  callback('something')
}

let x = Bar(Foo);