我对 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) 我最近开始在自己的项目中使用 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)
任何建议将不胜感激。
谢谢!