[英]Why the output is a string array even after assigning the variable as number in typescript?
代碼:
function fun(example:string|number|string[])
{
if(typeof example == "string")
{
console.log("Example is String " + example);
}
else if(typeof example == "number")
{
console.log("Example is Number " + example);
}
else{
console.log("Example is String Array " + example);
}
}
var example:number; //Here i have assigned the var as a number
fun(example);
Output:
Example is String Array undefined
我已將 var 類型指定為“數字” ,但為什么 output 屏幕顯示“字符串數組” ?
您沒有給變量example
賦值,因此默認情況下它是undefined
,這就是您的代碼運行最后一個else
語句的原因。
嘗試:
var example = 3
fun(example)
// Example is Number 3
請記住,類型注釋是在編譯時使用的。 這意味着當您的代碼運行時,它對您聲明的類型一無所知。
即使您剛剛聲明了一個數字變量,但您沒有為該變量分配一個數字,因為我們非常清楚我們在 typescript 中沒有任何數字的默認值這將是未定義的,並且您為變量不是該變量的屬性它將是分配給該變量的值的屬性。
在 function 中傳遞一個數字而不是示例變量(不包含值),它顯示字符串數組作為類型? bcz 未定義時,未定義的類型與字符串或數字不匹配,因此它轉到 else 塊。
在 TypeScript 中,確實可以在開始時將“類型”分配給變量; 但是,眾所周知,最終 TypeScript 文件將轉換為 JavaScript (以便我們的瀏覽器可以理解並對其進行處理),並且分配給未分配任何值的變量的默認值是undefined
。
var example:number;
行分配變量類型但不將值分配給變量 example ,因此它在執行時獲取undefined
並輸入最后一個 else 條件並打印: Example is String Array undefined
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.