如何在typescript中为常规函数添加接口



所以我对打字很陌生,但我很喜欢它。我确实有一个问题。

考虑以下内容:

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' };
}

所以上面的例子是有效的typescript。但是如果我想给函数应用一个接口,为什么我必须使用一个箭头函数呢?为什么我不能:

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

显然这不是有效的typescript:/

谁能给我一个例子,应用一个接口到一个正常的功能?不是存储在变量中的函数(let func = function() {})..正常功能

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

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

这意味着您将获得以下关闭:

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


这在实践中并不是什么大问题。如果将该函数赋值给一个期望某种函数类型的对象,它仍然会验证一切都是正确的。

最新更新