Angular英雄指南:为何一处用冒号、另一处用等号赋值?
Angular中类属性冒号与等号写法的区别
兄弟,我完全懂你的困惑!这两种写法都是TypeScript里定义类属性的方式,只是各自的作用场景不一样,咱们掰扯清楚:
冒号(
:)是类型注解:比如你看到的heroes: Hero[];,这只是在给TypeScript编译器“打招呼”——告诉它heroes这个属性的类型是Hero数组,但并没有给它赋初始值,所以这个属性一开始是undefined。在Angular组件里,这种写法特别常见于那些后续会通过服务拉取数据、或者在ngOnInit钩子里面初始化的属性,毕竟HeroesComponent里的英雄列表肯定是要从某个地方获取数据后再赋值的嘛。等号(
=)是赋值操作+隐式类型推断:像title = 'app';这种,不仅直接给title赋了初始值'app',TypeScript还会自动推断出title的类型是string。这种写法就适合那些一开始就有明确初始值的属性,比如组件的标题、固定的配置项之类的,一步到位搞定类型和初始值。
当然,如果你想更显式,也可以把两种写法结合起来:
title: string = 'app';
这样既明确指定了类型,又给了初始值,和单独用等号的效果完全一样,只是写法更严谨而已。
内容的提问来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

