我正在试图找出如何在TypeScript中为以下值定义类型:
[{"source": "bar"}, 1483228800, 1484265600]
到目前为止,我提出的唯一方法是:
interface FieldSource {
source: string;
}
interface SearchWhereClause {
between: [FieldSource, number, number]
}
这编译得很好,但我不确定这是否是正确的方法。
我看到我可以做到:
(FieldSource | number | number)[]
但在我的例子中,我明确地希望数组包含我的对象和两个数值。
有人能给点建议吗?
谢谢
但在我的例子中,我明确地希望数组包含我的对象和两个数值
如果这确实是您想要的,那么您当前的方法是100%正确的,需要注意的是,该数组中的类型必须按该顺序出现。
<代码>(字段源代码)[]<代码>与<代码> [字段源、编号、编号] /代码>有很大不同,请考虑以下内容:
interface MyInterface {
prop: number
}
type MyTuple = [MyInterface, number, number]
type MyArr = (MyInterface | number)[]
const myTup: MyTuple = [{ prop: 2 }, 2, 2] // <-- can only have two numbers
const myArr: MyArr = [{ prop: 2 }, 2, 2, 2, 2] // <-- can have any amount of numbers
const myArrAsTup: MyTuple = [{ prop: 2 }, 2, 2, 2, 2] // <-- not assignable to type
(FieldSource | number)[
,它与(FieldSource | number | number)[
相同,表示数组可以以任何顺序和数量包含这些值中的任何一个。
[FieldSource, number, number]
称为元组类型,它允许您强制执行数组中允许的类型,以及这些类型的位置和数组的长度。
type MyTuple = [MyInterface, number, number]
const tupleOne: MyTuple = [2, 2, {prop: 2} ] // <-- not assignable
const tupleTwo: MyTuple = [2, {prop: 2}, 2] // <-- not assignable
这还允许typescript通过索引或分解结构轻松推断从阵列检索到的实体类型:
const [interfaceInstance] = myTup // <-- type is MyInterface
const aNumber = myTup[1] // <-- type is number
如果无法确保类型顺序(或不希望),则始终可以对多个元组使用并集:
// less verbose, worse inference
type TupleMember = (MyInterface | number)
type MyTuple = [TupleMember, TupleMember, TupleMember]
// more verbose, can still infer types of tuple members
// as long as those tuples are created somewhere in your codebase
// and not the result of something else, like an API call
type MyTuple =
[MyInterface, number, number] |
[number, MyInterface, number] |
[number, number, MyInterface]
正如@hereticMonkey在问题的评论中提到的,这在很大程度上是在TypeScript中使用多种类型定义数组的重复
特别针对您的问题,因为您正在寻找显式集合。元组就是答案。
(FieldSource|数字|数字)[]
与Array相同
附带说明的是,我建议在
接口
上使用typefieldsource={source:string}
,除非您在课堂上使用它。与接口
相比,它是一种更强大、更直接、更灵活的结构。
问题内容: 我有以下数组: 结果: 现在如何显示具有重复值的键?在此函数不应返回([0],[9]),因为没有重复的值。 如何找到相同值的键,例如 对于“ 2011-06-25”,应返回[7],[8] 问题答案: 函数名称显然很长;) 现在$ dups将包含一个由重复值键控的多维数组,其中包含每个重复项的键,如果您将“ true”作为第二个参数发送,它将返回没有重复值的原始数组。 或者,您可以将原始
问题内容: 我有一个包含TEXT等数组的复合类型。我在主表中使用它来创建复合类型的数组。 如何生成INSERT命令(不使用复合类型的默认字段名称)?我可以使用复合数组创建一个TEMPORARY TABLE,然后将其插入主表吗? 例如: 第一个INSERT失败,并显示以下消息: 错误:INSERT具有比目标列更多的表达式。 有或没有array []构造都失败。 我的实际使用情况要复杂得多,因为该复合
我被困在创建一个具有键和数组值的模型上。但是我无法得到我预期的结果。指导我如何达到预期效果
我有以下数组 我想从这个数组中得到唯一的值。所以我希望我的结果是这样的 我使用了数组唯一函数,但无法得到结果 如果我有两个索引,这是有效的,但是对于多个索引呢?
我有两个多维数组,我想通过使用其中一个数组的值和另一个数组的键来组合它们。数组如下: 阵列1: 阵列 2: 我想生成的结果数组如下: 有没有一个PHP函数可以用来完成这个任务?
问题内容: 我是Java的新手,所以这有点令人困惑 我想获取json格式的字符串 我想要的结果是 我目前正在做的是这样的: 我得到这个结果 我试过了,但是没用json.put(“ user”,json.put(“ name”,“ Lamis”))); 问题答案: 试试这个: 但是,您显示的“错误”结果将比“正确”结果更自然地映射“存在一个名称为“ lamis”的用户”。 您为什么认为“正确”结果更
我正在尝试将key+value推入具有其唯一值的数组中。 像这样尝试: console.log输出给出正确的值: 我要做的是将键和值推入输入字段,这样输入字段将是:username:password: 不需要硬编码,因为我数组中的每个对象都有不同的键和值。
问题内容: 如何在Go for map中将键创建为数组。例如在ruby中,我可以这样实现: Golang的外观如何? 问题答案: 数组类型(不像片)在Go具有可比性,所以在它什么神奇:你可以定义它像任何其他地图:这里会和会。 该比较操作符 ==和=必须为键类型的操作数被完全定义!; 因此,键类型不能为函数,映射或切片。 输出: 在Go Playground上尝试一下。 要查询元素: 您还可以一步创