【问题标题】:How do you add an interface to a regular function in typescript如何在打字稿中为常规函数添加接口
【发布时间】:2021-10-19 19:15:39
【问题描述】:

所以我对打字稿比较陌生,但我非常喜欢它。不过我确实有一个问题。

考虑以下几点:

interface ResourceGetter<TInput, TOutput> {
  (id: TInput): TOutput;
}

interface User {
  id: number;
  name: string;
}

const getUser: ResourceGetter<number, User> = (id: number): User => {
  return { id, name: 'Some random person' };
}

所以上面的例子是有效的打字稿。但是,如果我想将接口应用于我的函数,为什么必须使用箭头函数?为什么我做不到:

function getUser<ResourceGetter<number, User>>(id: number): User {
  // some code here.
}

显然这不是有效的打字稿:/

谁能给我看一个将接口应用到普通函数的例子?不是存储在变量中的函数 (let func = function() {}).. 一个普通函数。

【问题讨论】:

标签: typescript function interface


【解决方案1】:

您不能将显式类型应用于函数语句(即function fnName(...args) {...body})。只是没有语法。

您可以键入参数和返回值,但不能将整个函数作为一种类型。

这意味着您将获得的关闭是这样的:

function getUser(
  id: Parameters<ResourceGetter<number, User>>
): ReturnType<ResourceGetter<number, User>> {
  // some code here.
}

Working example of that


这实际上并不是什么大问题。如果你将该函数分配给一个需要某种函数类型的东西,它仍然会验证一切都是正确的。

【讨论】:

    猜你喜欢
    • 2018-11-18
    • 2013-01-26
    • 2016-06-24
    • 1970-01-01
    • 2019-04-23
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多