【发布时间】:2019-02-09 12:40:11
【问题描述】:
我有以下(示例)数组:
[
'test-string',
foo => ({ foo }),
'other-string',
bar => ({ bar })
]
使用(示例)界面
interface MyValues { foo: string; bar: string; }
期望这个数组类型的函数必须保证所有函数的结果统一实现完整的接口。那可能吗? 目前,我有:
type Fn<Values> = (part: string) => { [key in keyof Values]?: string }
type Item<Values> = string | Fn<Values>;
function extract<Values>(items: Item<Values>[]) {
const values = {} as Values;
// (...)
return values;
}
但是,这种类型只检查所有函数是否返回与Values 的键匹配的对象,而不是所有键最终都存在。
我不太确定这种检查是否可以使用 TypeScript,我发现 this answer 也用于类型的“计算”,但我不确定这是否适用于这个用例。
【问题讨论】:
-
如果数组中总是有 4 个项目,你可以用元组来做
-
数组可以是任意长度。界面也可以有任何形式。
标签: typescript generics types typescript-typings static-typing