何时在打字稿Angular 2中使用@Optional()和三元运算符?

时间:2016-05-19 12:00:34

标签: typescript annotations angular

我有点困惑何时使用@Optional和何时使用?: 对于@Optional

 import {Optional} from '@angular/core';
    log:string;
    constructor(@Optional() private logger:Logger) { 
 }

对于三元运算符(?:)

 export class DataService {
            private videos: string[]

            getAllMovies(fetchFromService?: boolean): ng.IPromise<any> {
                var self = this;

                if (fetchFromService) {
                    return getMoviesFromService();
                } else {
                        return getVideosFromService();
                    }
                }

1 个答案:

答案 0 :(得分:1)

它们适用于两种完全不同的情况。

@Optional()装饰器是用于使用构造函数注入服务的注释。然后将这些服务标记为可选,如果无法解析服务或者在层次结构中找不到提供者,则不会抛出任何异常。

另一方面,三元运算符将方法参数标记为可选。所以你实际上可以省略那些默认为null的参数,如下所示:

getAllMovies(true).then(...)

getAllMovies().then(...) // parameter 'fetchFromService' defaults to null