如何在打字稿中声明函数类型

pet*_*gan 15 typescript

我正在使用打字稿并将一个函数传递给另一个函数。

如果我有一个函数传递到打字稿中的另一个函数中,我应该如何编写类型?

我已经尝试过successHandler: function,但这似乎不起作用。

export function useSubscription(address: string, successHandler: function) {
   successHandler(address)
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*onB 11

使用函数签名声明一个类型并将其作为类型传递:

type SuccessHandler = (address: string) => string;

function useSubscription(address: string, successHandler: SuccessHandler) {
    successHandler(address)
}
Run Code Online (Sandbox Code Playgroud)

  • `(address: string) => void` 可能更好。由于 `useSubscription` 不使用 `successHandler` 的返回值,因此它不需要它。 (3认同)

Ora*_*ram 4

你可以这样声明它:

export function useSubscription(address: string, successHandler: (string) => void)) {
   successHandler(address)
}
Run Code Online (Sandbox Code Playgroud)

更改是用大写 F 表示Function

  • 确实如此,但这不是类型检查。这只是让打字稿变得安静。由于我们调用了“successHandler(address)”,因此我们应该声明一个确保其正常工作的类型,即“(address: string) => void”。 (4认同)