【发布时间】:2017-09-28 19:50:07
【问题描述】:
在打字稿中,我如何表达一个函数只接受一个空映射或数组?
类似这样的东西(但它不起作用):
function foo(emptyMapOrArray: {} | []) {
//...
}
// This should error
foo(["a"])
foo({a: 1})
// This should work
foo([])
foo({})
用例是我希望能够将“原子”值分配给 JSON 文档的一部分。类似于 paper 中使用的光标。所以一个更完整的例子是这样的:
function assign(map: {}, key: string, value: string | number | boolean | {} | []) {
map[key] = value
}
但是我意识到我可以将空映射和空数组建模为单独的操作。但我仍然认为了解 typescript 中的类型系统在这种情况下的表现力是多么有趣。
【问题讨论】:
-
你的用例是什么?
-
用用例更新
标签: typescript