【发布时间】:2016-12-05 07:34:49
【问题描述】:
我正在使用JSON API 格式,它具有data 属性的概念,它可以保存标量(单个)或数组(多个)值。我正在编写用于编码和解码为格式的代码,并且在命名我的类型时,试图为这种类型的值想出一个好名字。在 TypeScript 中,它会是
type Poly<T> = T | T[];
为了您的信息,这里是 JSON API 文档的相关部分(我的重点):
主要数据必须是任一:
单个资源对象、单个资源标识符对象或 null,用于针对单个资源的请求
资源对象的数组、资源标识符对象的数组或空数组 ([]),用于针对资源集合的请求
作为一个例子,这里是这样一个突变值的映射函数:
function polymap<T, U>(data: Poly<T>, fn: (input: T) => U, thisArg?: any): Poly<U> {
if (data instanceof Array) return (data as T[]).map(fn, thisArg);
return fn.call(thisArg, data as T);
}
无论如何,如您所见,我将使用“poly”,但有什么既定的术语或其他好的建议吗?
【问题讨论】:
-
我相信 TypeScript 术语是来自计算机科学的术语 - 联合类型。当然,联合类型所指的远不止 T | T[]
-
是的,我知道联合类型,我正在为这种特殊情况寻找一些东西。
-
有趣的是,这种类型的问题即使是正确的答案也不会得到“没有确定的术语”的答案。如果该术语存在,有人会回答,但如果它不存在,那么任何人如何确定它不存在,而不是他不知道呢? :)
-
想不出名字,但更重要的是,这是一种不好的做法,它会引入复杂性并且可以欺骗 api 用户。只需发送一个包含 1 个元素的数组即可。
-
@AlexG 我原则上同意,但这个非标量或数组的概念已融入我正在处理的 API 中。
标签: arrays typescript naming