所以我对打字很陌生,但我很喜欢它。我确实有一个问题。
考虑以下内容:
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.
}
这在实践中并不是什么大问题。如果将该函数赋值给一个期望某种函数类型的对象,它仍然会验证一切都是正确的。