我希望定义一个Map
变量,该变量应该包含相同类型的原始值(字符串|数字|布尔值)或其他type Primitive = string | number | boolean;
type SafeNestedMap = Map<string, Primitive | SafeNestedMap>;
let states: SafeNestedMap = new Map<string, SafeNestedMap>();
。
我试过这样做:
TS2456: Type alias 'SafeNestedMap' circularly references itself.
然而编译器抱怨:
public int numAdjacent(int row, int col) {
int numOfTreasure = 0;
for (int currentCol = col - 1; currentCol <= col + 1; currentCol++) {
for (int currentRow = row - 1; currentRow <= row + 1; currentRow++) {
if (currentRow < 0 || currentRow >= mapHeight() || currentCol < 0 || currentCol >= mapWidth()) {
continue;
}
numOfTreasure += hasTreasure(currentRow, currentCol) ? 1 : 0;
}
}
return numOfTreasure;
}
如何正确声明此递归类型?
答案 0 :(得分:7)
关于interface
和type
在TypeScript中的不同之处,有一些非常微妙的细节;类别别名的一个警告是它们可能不是自引用的(这是因为它们会立即展开,而接口会在以后扩展)。
你可以写
interface SafeNestedMap extends Map<string, Primitive | SafeNestedMap> { }