首页 > 解决方案 > 声明对象键的类型

问题描述

我有一个XInterface这样的:

export interface XInterface {
    foo: (() => Foo[]) | Foo[],
    bar: string,
    baz: number
}

然后,使用接口声明一个我想要的对象类型fooFoo[]比如

const myObj: XInterface = {
    [myFoo1, myFoo2],
    'bar',
    1
}

但是由于我已经使用:来声明我的 Foo 数组,所以我不知道如何确保 foo 是一个数组,而不是一个返回数组的函数。

我怎样才能做到这一点?

标签: javascripttypescript

解决方案


这是我会遵循的模式。将来你会将此对象传递到 XInterface 预期的某个地方,它不知道 foo 是一个函数还是一个数组。考虑到这一点,您将始终必须检查 foo 的内容。更好的方法是简单地将 foo 转换为函数。


推荐阅读