typescript - 带有可选项的固定数组长度

标签 typescript

我在我的应用程序中定义了一个接口(interface):

interface someInterface {
    one: string;
    two: string;
}

我的函数参数之一应该始终接受 1 或 2 个元素的同构数组,如下所示:

// second item should be optional
[{ one: 'anyString', two: 'anyString' }, { one: 'anotherString', two: 'anotherString' }] 

我希望分配给参数的这些类型之一会起作用:

1. [someInterface, someInterface | null]
2. [someInterface, someInterface | undefined]
3. [someInterface, someInterface?]
4. someInterface[]

但 1 和 2 需要秒项,至少以 nullundefined 的形式。 3 不是有效的 typescript 代码。 4 接受无限数量的值。

问题:如何定义一种数组类型,它接受 1 或 2 个同类值:在这种情况下,第一个值应该始终是 someInterface 类型并且应该永远在场。第二个可选值(如果存在)也应该是 someInterface 类型。

基本上,我正在寻找一个快捷方式(即以防数组应该接受 1 到 5 个值):

[someInterface, someInterface] | [someInterface]

最佳答案

您可以将类型定义为“具有一个值的元组或具有两个值的元组”,这将生成一个可以像常规数组一样使用的数组:

var SomeType = [someInterface] | [someInterface, someInterface];

关于typescript - 带有可选项的固定数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498764/

相关文章:

javascript - 如何使用 typescript 编写 vuex 存储?

javascript - 无法创建 LookUpField

javascript - 如何在 ngFor 中实例化和使用后续数组?

typescript - 仅指定第一类型参数

typescript - 获取 Botbuilder 登录按钮取消响应

javascript - 如何在 TypeScript 中将类方法附加为 jQuery 事件处理程序

angular - 在另一个服务 Angular 2 中注入(inject)服务

typescript - 广度优先搜索实现陷入无限循环

javascript - 如何在 javascript 中创建动态内插字符串?

javascript - typescript :有条件地将对象属性标记为可选?