【发布时间】:2021-03-09 17:49:05
【问题描述】:
在官方打字稿文档中,有一个函数参数类型推断的技巧: https://www.typescriptlang.org/docs/handbook/2/functions.html#inference
当我们只定义函数的类型/接口时,是否可以做同样的事情?
原始示例 工作原理(来自官方文档):
function firstElement<T>(arr: T[]): T {
return arr[0];
}
如果我想单独定义 firstElement 函数的类型,我需要使用泛型:
type FirstElementFn<T> = (arr: T[]) => T;
在此之后,为了让它像原始示例一样工作,我需要在声明函数时传递泛型类型:
const firstElement: FirstElementFn<number> = (arr) => arr[0]
问题是:是否可以在函数本身之前定义函数的类型并从声明中推断出参数类型,就像在原始示例中一样?
更新:
这个实际上和原来的一样工作:
type FirstElementFn = <T>(arg: T[]) => T;
const firstElement: FirstElementFn = (arg) => arg[0];
但是可以强制执行某些类型吗?像这样:
// This does not work
const firstStringElement: FirstElementFn = (arg: string[]) => arg[0];
【问题讨论】:
-
与其更新问题以包含答案,不如将解决方案发布为您自己问题的答案,这完全没问题,甚至受到鼓励。
标签: typescript