Arrays TypeScript中混合类型的数组

Arrays TypeScript中混合类型的数组,arrays,typescript,Arrays,Typescript,我有我想添加类型的现有API,我有接受字符串函数或对象的函数(我可以使用重载),但它也接受类似这样的混合值数组 在TypeScript中是否可以有字符串、函数或普通对象数组?它应该为具有其他类型的数组抛出错误 编辑根据评论,我添加了以下内容: function Terminal(interpreter: (string, object) => void, settings: object); function Terminal(interpreter: (string | ((string

我有我想添加类型的现有API,我有接受字符串函数或对象的函数(我可以使用重载),但它也接受类似这样的混合值数组

在TypeScript中是否可以有字符串、函数或普通对象数组?它应该为具有其他类型的数组抛出错误

编辑根据评论,我添加了以下内容:

function Terminal(interpreter: (string, object) => void, settings: object);
function Terminal(interpreter: (string | ((string, object) => void) | object)[], settings: object) {
    if (typeof interpreter == 'function') {
        interpreter("foo", {});
    } else if (interpreter instanceof Array) {
        interpreter.forEach((arg) => console.log(arg));
    }
}

Terminal(["foo", function (command, term) { }], {});
Terminal(function(command) {

}, {});

但TypeScript中出现了一个错误,即重载签名与实现和调用中的签名不匹配。

如果使用联合类型,则必须列出该联合类型中所有可能的参数类型。如果你说

接受字符串函数或对象的函数(我可以使用重载),但它也接受这样的混合值数组

可以为单个值定义类型别名,该值可以是字符串、函数或对象

type SingleArg = string | object | ((string, object) => void);
并定义一个接受一个单参数或数组的函数(不需要任何重载)

另一个限制

它应该为具有其他类型的数组抛出错误


这很棘手,因为例如数字是TypeScript中的对象。若要禁止数字,但不允许对象,您必须更具体地说明应该接受的对象的确切类型。

如果使用联合类型,则必须列出该联合类型中所有可能的参数类型。如果你说

接受字符串函数或对象的函数(我可以使用重载),但它也接受这样的混合值数组

可以为单个值定义类型别名,该值可以是字符串、函数或对象

type SingleArg = string | object | ((string, object) => void);
并定义一个接受一个单参数或数组的函数(不需要任何重载)

另一个限制

它应该为具有其他类型的数组抛出错误


这很棘手,因为例如数字是TypeScript中的对象。要禁止数字,但不允许对象,您必须更具体地说明应该接受的对象的确切类型。

是的,有可能:
(string | Function | object)[
string[]| Function[]| object[]
可能是的重复,也可能是:
(string | Function | object)[]
字符串[]|函数[]|对象[]
的可能重复项