我就喜欢这种类型
type d = {
(e: 'edit', value: boolean): void;
(e: 'download', value: boolean): void;
(e: 'delete', value: boolean): void;
}
我想设置一个函数的类型,它只接受'edit' | 'download' | 'delete'
,即所有类型为d的e值。
例如:
function myFunc(e: ??what type??) {
}
myFunc('edit'); // valid type
myFunc('some') // invalid type
2条答案
按热度按时间yc0p9oo01#
请尝试改用Actions来建构回呼类型。
现在,您可以指定类型
oaxa6hgo2#
这里的问题是
d
是一个重载的函数类型。通常,你可以使用Parameters
实用程序类型来轻松地获取函数的参数类型。但是Parameters
只返回 last 重载的类型。但是我们可以通过创建自己的支持
N
重载的实用程序类型来解决这个限制。OverloadedParameters
最多接受4个重载。您可以根据需要将其扩展为任意多个重载。只需遵循以下模式即可。现在我们得到一个包含重载函数
d
的所有参数类型的元组,剩下要做的就是用number
索引它,得到所有参数的并集,然后用0
索引它,得到每个并集元素的第一个元素。Playground