2014-02-07 87 views
16

我知道當您在Typescript中聲明變量時,可以選擇是否指定變量的類型。如果沒有指定類型,則使用默認的「any」類型。有沒有辦法強制所有變量聲明一個類型,即使它可能是「任何」。如在,我想要一個編譯器錯誤,當一個類型沒有指定。這樣程序員就會被迫將所有東西都放到一個類型中,並防止變量被意外地遺留爲「任何」的情況。如何強制Typescript中的所有變量聲明

回答

17

聲明的變量不一定是TypeScript中的類型,這是不正確的。如有可能,TypeScript編譯器將根據聲明的右側推斷出一種類型。

例如:

var x = 150; 

x將是一個號碼作爲RHS是一個數字。

您可以使用命令行編譯選項趕上聲明,其中類型不能使用--noImplicitAny推斷:

Warn on expressions and declarations with an implied 'any' type.

此選項會趕上,比如當一個變量d聲明,尚未分配的情況下,馬上給一個值。

var d; 

會產生一個錯誤:

error TS7006: Parameter 'd' of 'test' implicitly has an 'any' type.

編譯器開關還捕捉參數沒有指定類型,並且作爲@basarat在註釋中指出,它也捕捉返回類型和類/接口部件。

還有一點this blog post更多的信息。請注意,還有一個等效的MSBuild /項目設置可用:<TypeScriptNoImplicitAny>

+1

和返回類型,以及類/接口成員:) – basarat

+0

@basarat - 是啊,完全忘了包括所有的地方。固定。謝謝! – WiredPrairie

+0

完美的工作!謝謝! – Michelle

1

您還可以設置你的tsconfig.json

{ 
    "compilerOptions": { 
    "noImplicitReturns": true, 
    "noImplicitAny": true 
    } 
}