以角度制作模型的实际需求是什么?

时间:2018-06-01 12:01:28

标签: angular model

虽然我是棱角分明的新手,但并不知道角度的所有概念。所以我只想知道模型在可观察量中的实际用途。

虽然,这段代码:

getRestaurants = (): Observable<Restaurant[]> => {
    const restaurants: Restaurant[] = [{
        'RestaurantID': 1,
        'RestaurantName': 'The Restaurant'
    }];
    return restaurants;
};

可以使用以下代码替换:

getRestaurants = (): Observable<any> => {
    const restaurants: any = [{
        'RestaurantID': 1,
        'RestaurantName': 'The Restaurant'
    }];
    return restaurants;
};

我的困惑在于为什么我们需要使用该模型,如果它应该是,我们将需要为我们需要从API获得的所有事情制作模型,即使API有很多方法。

2 个答案:

答案 0 :(得分:2)

这不是一个模型,而是一个变量类型,它不是角度的一部分,而是角度通常使用的打字稿的一部分。 :)

使用Restaurant[]代替any可以让您从完成中受益,该脚本会引入(例如,如果您使用支持打字稿的ide,则您将为变量完成属性)。

如果您想了解更多打字稿功能,请查看官方文档:https://www.typescriptlang.org/docs/home.html

答案 1 :(得分:1)

在构建大型应用程序时,此模型将帮助您编写具有更少错误的代码,并为您提供非常强大的自动完成功能。这些类型也很有用,因为在同一个项目上工作的其他开发人员会更容易理解代码背后的逻辑(或者至少会更快地弄清楚)。

实施例: 想象一下,你正在处理某种宠物(狗和猫)目录的应用程序,狗和猫是相似的(4条腿2只眼睛等),但是不同的物种。在这种情况下,您需要类Pet和两个子类DogCat。 在乞讨中,这种知识是无用的,但随着时间的推移和代码库的增长(以及不同类型的宠物的数量),在某些时候创造一些动物而不是其他动物的机会将开始呈指数增长。因此,通过使用打字稿,你可以减少做一些你不想做的事情的机会。 我自己作为纯粹的js人,在开始的时候就像你一样,因为在大多数情况下所有这些类型看起来都像是矫枉造成并且针花费时间,但随着代码库的增长,我很高兴我有TS在我身边:D

正如上面的答案所说,打字是来自TS的糖,而不是强制性的角度规则。