2017-08-13 63 views
2

任何人都可以解釋我,請問爲什麼這段代碼不會觸發錯誤?Typescript將null分配給類型不會觸發錯誤

import { Injectable } from '@angular/core'; 

interface Animal{ 
    name: string; 
} 

@Injectable() 
export class AnimalService { 
    lion: Animal = null; 
    constructor() {} 
    get(){ 
    return this.lion; 
} 
} 
+0

默認情況下在JavaScript(和打字稿)任何字段的值可以是零或未定義,看看[stricktNullCheck](https://github.com/Microsoft/TypeScript /拉/ 7140)。 –

回答

3

你必須設置"strictNullChecks": truetsconfig.json爲它當你做lion: Animal = null;拋出錯誤。

documentation for strictNullChecks compiler flag

在嚴格空檢查模式,零和未定義的值不在 每一種類型的域,並且僅分配給自己和任何 (一個例外是未定義的也可以分配給void)。

另見:https://ariya.io/2016/10/typescript-2-and-strict-null-checking

+0

那麼最好的選擇是將標誌設置爲false還是將其設置爲true,並使用像const lunchBox這樣的語法:Nullable [] = []; – Whisher

+1

這取決於您的要求。我個人打開'strictNullChecks'並使用'variable:Type |對於可以允許空值的特定情況,爲null。 – Saravana

相關問題