如何指定回调函数的类型?

时间:2018-07-01 13:46:35

标签: typescript

我该如何等效于TypeScript中的以下Javascript:

function f1(callback) {
   // do some work
   if (err)
     callback(err);
   else
     callback(undefined);
}

callback是一个函数,我不想将其指定为any类型。

2 个答案:

答案 0 :(得分:2)

使用相同的方式来表示任何lambda函数的类型:

function f1(callback: (err: SomeErrorType) => ReturnType) {
   // do some work
   if (err)
     callback(err);
   else
     callback(undefined);
}

或者callback不返回任何内容:

function f1(callback: (err: SomeErrorType) => void) {
   // do some work
   if (err)
     callback(err);
   else
     callback(undefined);
}

您还可以在外部定义类型,这将使​​您可以在多个地方重用它:

type Callback = (err: SomeErrorType) => void

function f1(callback: Callback) {
   // do some work
   if (err)
     callback(err);
   else
     callback(undefined);
}

答案 1 :(得分:1)

您可以仅使用函数签名来指定参数和回调的返回类型。假设有一个可选的字符串参数和一个空返回类型,这就是它的样子

onNewToken