【发布时间】:2021-08-08 22:07:40
【问题描述】:
我想找到一种方法来为嵌套对象路径的所有键提供所有 value types。
我在一定程度上是成功的,但未能为数组对象内的深层嵌套属性设置值类型。
interface BoatDetails {
boats: {
boat1: string;
boat2: number;
};
ships: Array<Ship>
}
interface Ship {
shipName: string
}
const boatDetails: BoatDetails = {
boats: {
boat1: "lady blue",
boat2: 1,
},
ships: [
{shipName: "lacrose"}
]
};
对于上述代码,我能够成功设置嵌套对象路径的值类型,例如 boats.boat1 其 value type is string、boats.boat2 其 value type is number、ships 其 value type is Array<Ship>。
但无法为嵌套路径ships.0.shipName设置value type。
我已参考以下链接设置深层嵌套对象路径类型: Typescript: deep keyof of a nested object
以下是我在打字稿游乐场中为深层嵌套对象路径设置值类型的尝试:
Playground link for seeting value type for deep nested object paths
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/67606750/…
-
对不起,它没有回答,但感谢您调查。
-
好吧,我相信问题是
0索引未强制以Array<Ship>类型呈现。如果您将ships的类型切换为[Ship],您的代码就可以工作。 -
请注意,
setValue()函数中的V类型参数实际上并没有做任何事情;您可能应该删除它并将所有对V的引用直接替换为PathValue<T, P>。
标签: typescript