小编UK_*_*fka的帖子

使用 Object.entries 时保留类型

我对 TypeScript 相当陌生,所以我正在升级我的旧项目以使用它。

但是,我不确定在某些数据上调用 Object.entries 时如何保留正确的类型。

代码沙盒示例

举个例子:

级别.tsx:

  const UnpassableTileComponents = useMemo(() => 
    Object.entries(levelData[`level_${gameLevel}`].tiles.unpassable_tiles).map(([tileType, tiles]) => (
      tiles.map(([leftPos, topPos], index) => (
        <UnpassableTile
          key={`${tileType}_${index}`}
          leftPos={leftPos * 40}
          topPos={topPos * 40}
          tileType={tileType}
        />
      ))
    )
  ).flat(), [gameLevel])
Run Code Online (Sandbox Code Playgroud)

levelData.tsx:

import levelJSON from "./levelJSON.json";

interface ILevelJSON {
  [key: string]: Level;
}

interface Level {
  tiles: Tiles;
}

interface Tiles {
  unpassable_tiles: UnpassableTiles;
}

interface UnpassableTiles {
  rock: Array<number[]>;
  tree: Array<number[]>;
}

export default levelJSON as ILevelJSON;
Run Code Online (Sandbox Code Playgroud)

levelJSON.json:

{
  "level_1": {
    "tiles": { …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs

9
推荐指数
2
解决办法
1万
查看次数

如何将 TypeScript 与 Object.entries() 一起使用?

我最近开始在自己的项目中使用 TypeScript,尽管我不确定应该如何让我的代码正常工作。

Object.entries(data[`set_${id}`].tiles).map(([tileType, tiles]) => (
  tiles.map(([left, top]), index) => (
     //rest of code
  )
))
Run Code Online (Sandbox Code Playgroud)

TypeScript 抱怨 left、top 和 index 都有“any”类型。我该如何在此配置中分配类型?

data.json结构:

{
  "set_1": {
    "tiles": {
       "typeA": [[0, 1], [0, 2]],
       "typeB": [[2, 0], [2, 1]]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激。

谢谢!

javascript typescript

7
推荐指数
2
解决办法
4779
查看次数

标签 统计

javascript ×2

typescript ×2

reactjs ×1