gpt4 book ai didi

javascript - 将其正确放入方法中(TypeScript 新手)

转载 作者:行者123 更新时间:2023-12-03 06:38:09 24 4
gpt4 key购买 nike

各位程序员大家好,我是编程和 typescript 的新手。我的问题是如何将此代码单独放入一个方法中。

var item = new RoadMapExampleItem();
item.calculatedCompleted = m.calculatedCompleted;
item.estimatedCompleted = m.estimatedCompleted;
item.epicId = e.id;
item.epicText = e.name;
item.initiativeId = i.id;
item.initiativeText = i.name;
item.mileStoneId = m.id;
item.mileStoneText = m.name;
item.epicProgress = e.progress;
item.mileStoneProgress = m.progress;
item.initiativeProgress = i.progress;
item.versionId = v.id;
item.versionText = v.versionText;
result.push(item);
});

这是完整的代码

private buildRoadMapExampleItems(versions: Version[]): RoadMapExampleItem[] {
var result = new Array<RoadMapExampleItem>();

if (versions != null)
versions.forEach(v => {
if (v.mileStones != null)
v.mileStones.forEach(m => {
if (m.initiatives != null && m.initiatives.length > 0) {
m.initiatives.forEach(i => {
if (i.epics != null && i.epics.length > 0) {
i.epics.forEach(e => {
var item = new RoadMapExampleItem();
item.calculatedCompleted = m.calculatedCompleted;
item.estimatedCompleted = m.estimatedCompleted;
item.epicId = e.id;
item.epicText = e.name;
item.initiativeId = i.id;
item.initiativeText = i.name;
item.mileStoneId = m.id;
item.mileStoneText = m.name;
item.epicProgress = e.progress;
item.mileStoneProgress = m.progress;
item.initiativeProgress = i.progress;
item.versionId = v.id;
item.versionText = v.versionText;
result.push(item);
});
}
else {
var item = new RoadMapExampleItem();
item.calculatedCompleted = m.calculatedCompleted;
item.estimatedCompleted = m.estimatedCompleted;
item.initiativeId = i.id;
item.initiativeText = i.name;
item.mileStoneId = m.id;
item.mileStoneText = m.name;
item.versionId = v.id;
item.versionText = v.versionText;
item.mileStoneProgress = m.progress;
item.initiativeProgress = i.progress;
result.push(item);
}
});
}

最佳答案

您可以创建一个以“e”作为参数的方法,然后将其插入结果数组中。所以里面

 i.epics.forEach()

你可以写类似的东西

 i.epics.forEach(e => result.push(this.createItem(e)));

并在该方法 block 下创建第二个方法,例如

private createItem(e) : RoadMapExampleItem
{
var item : RoadMapExampleItem = new RoadMapExampleItem();
item.calculatedCompleted = m.calculatedCompleted;
item.estimatedCompleted = m.estimatedCompleted;
item.epicId = e.id;
item.epicText = e.name;
item.initiativeId = i.id;
item.initiativeText = i.name;
item.mileStoneId = m.id;
item.mileStoneText = m.name;
item.epicProgress = e.progress;
item.mileStoneProgress = m.progress;
item.initiativeProgress = i.progress;
item.versionId = v.id;
item.versionText = v.versionText;
return item;
}

这将是一种分离代码的方法。

但是,如果我可以提供更多信息,而不仅仅是说如何准确地拆分您所要求的内容。 “item.epicId = e.id, item.epicText = e.name,..”可能有点困惑。这可能是查看 Builder pattern 的好地方。 。 (但是,如果您刚刚开始编程,我还不会真正担心这一点,设计模式是您稍后将学习的东西。

此外,明智的做法是注意它是 typescript ,因此您可以使用“类型”。创建“item”时,您可能需要使用 item : RoadMapExampleIem。最后,您将来可能想使用 let 而不是 var

-- 另请注意,用更多方法将其拆分可能是明智的,因为您仍然有相当多的缩进级别。在这一部分

    if (versions != null)
versions.forEach(v => {
if (v.mileStones != null)
v.mileStones.forEach(m => {
if (m.initiatives != null && m.initiatives.length > 0) {
m.initiatives.forEach(i => {
if (i.epics != null && i.epics.length > 0) {

但是你已经在想方法了,这是件好事! ;-)

关于javascript - 将其正确放入方法中(TypeScript 新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38094164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com