簡體   English   中英

為什么 output 是一個字符串數組,即使在 typescript 中將變量分配為數字之后?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM