typescript - 带有可选项目的固定数组长度
问题描述
我在我的应用程序中定义了一个接口:
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 期望秒项,至少以null
or的形式undefined
。3 不是有效的打字稿代码。4 接受无限数量的值。
问题:如何定义一种数组类型,它接受 1 或 2 个同类值:在这种情况下,第一个值应该始终是someInterface
类型并且应该始终存在。第二个可选值(如果存在)也应该是 type someInterface
。
基本上,我正在寻找一个捷径(即如果数组应该接受 1 到 5 个值):
[someInterface, someInterface] | [someInterface]
解决方案
您可以将类型定义为“具有一个值的元组或具有两个值的元组”,这将生成一个可以像常规数组一样使用的数组:
var SomeType = [someInterface] | [someInterface, someInterface];
推荐阅读
- c - 如何在不强制使用 c 的情况下为每个线程分配任务,即每个线程在完成第一项工作后需要做一些工作?
- php - 在 Woocommerce 的管理订单页面上添加城市下拉列表
- c# - 如何使用 C# 在 Powerpoint 中更改字符间距
- mysql - Mysql 查询出多个结果集?(这里有sql)
- angular - Angular 6 Yelp Fusion API GET 请求
- python - pandas.DataFrame.equals 的古怪行为
- multithreading - 即使例程在 Golang 中发生“运行时错误”,如何“保持主线程运行”?
- git - 在终端中克隆 ohmyzh 时,它显示“找不到文件”。为什么?
- node.js - Mongoose CastError
- java - 运行 Grails 3.3.8 应用程序启动失败时出错