javascript - 在 Typescript 中键入非确定性深度数组
问题描述
我目前正在将一些Javascript代码移植到Typescript。我有一个基本上等同于以下内容的功能:
let deepArray = [];
function deeper() {
if(Math.random() > 0.5) {
deepArray.push(deeper());
} else {
deepArray.push("No deeper.");
}
return deepArray;
}
deeper();
我想知道是否有一种简单的方法可以将类型分配deepArray
给deeper
. 显然,它具有string[]
一定的深度,但如前所述,该深度是不确定的。我希望代码尽可能与原始代码相似,因此避免更改数据结构是目标。这是可能的,还是我应该将其标记为any
并继续?
解决方案
您可以定义一个表示任意嵌套数组的类型:
interface NestedArray<T> extends Array<T | NestedArray<T>> {
}
let deepArray: NestedArray<string> = [];
function deeper() {
if (Math.random() > 0.5) {
deepArray.push(deeper());
} else {
deepArray.push("No deeper.");
}
return deepArray;
}
deeper();
console.log(deepArray)
推荐阅读
- java - LDAPS:简单绑定失败
- python - 为什么 tf.feature_column.input_layer 以重新排列的顺序返回我的特征值
- apache-spark - 为蒙特卡洛方法尝试 GCP 时出错
- azure - Azure 服务总线中每个实体的最大会话数
- php - 如何在 symfony 中创建一个附加用户的对象
- elasticsearch - Elasticsearch:查询无法返回正确的结果
- angular - 如何在angular4中为每个json数组使用
- microsoft-graph-api - 如何使用 Microsoft graph 获取匿名用户帐户的访问令牌?
- python - 使用 Unix Shell 脚本进行文件解析
- facebook-node-sdk - 广告创意帖子是由处于开发模式的应用创建的。必须在公开场合才能在 Facebook 广告中制作此广告