[TypeScript]2.認識原始資料型別

文、意如

Javascript的型別有兩種,分成原始資料型別(Primitive data types)物件型別(Object types)

本篇將介紹原始資料型別與幾種比較常用的型別。

任務一:認識原始型別
    1-1  使用定義String字串類型
    1-2  使用定義boolean布林類型
    1-3  使用定義Number數字類型
    1-4  使用定義BigInt大整數類型
    1-5  使用undefined未定義、 null空值類型
    1-6  使用定義symbol符號值類型

任務二:認識其它常用型別
    2-1  認識any任意型別
    2-2  認識Union聯合型別
    2-3  認識陣列的型別
    2-4  認識函式Function型別
任務一:認識原始型別

所有原始型別都是不能直接更改的但可以替換。

範例1:字串不能直接更改,但可以替換

var mystr = "helloworld";
console.log(mystr); //helloworld

mystr.toUpperCase();//不能直接更改
console.log(mystr);//helloworld    

mystr = mystr.toUpperCase()//可以替換
console.log(mystr)//Hello

 

 

可以使用陣列方法改變陣列

var myarr = [];
console.log(myarr); // []
myarr.push("HelloWorld");
console.log(myarr); // ["HelloWorld"]

 

 

 

 

最新的 ECMAScript 標準定義了七種資料型別分別為

字串:string、布林:boolean、數字:number、大整數:bigint、

未定義:undefined、空值: null 、符號值:symbol

1-1使用定義String字串類型
var mycity: string = 'Taipei'; //設定字串
var mystr: string = `Hi! 我住在 ${mycity}.`;
// ``用來定義 ES6 中的範本字串, 可使用${ }在字串中放入變數
console.log(mystr); //Hi! 我住在 Taipei.

 

 

1-2使用定義boolean布林類型
//使用定義boolean字串類型
var myboolean: boolean = false;
console.log(myboolean); //fasle
myboolean = true;
console.log(myboolean);//true

 

 

1-3使用定義Number數字類型
Number最大且安全的整數為 (253-1) = 9,007,199,254,740,991
//使用定義Number數字類型
var binaryLiteral: number = 0b1010; // 二進位
var octalLiteral: number = 0o744;    // 八進位
var decLiteral: number = 6;    // 十進位
var hexLiteral: number = 0xf00d;    // 十六進位

 

1-4使用定義BigInt大整數類型
用於大於此數9,007,199,254,740,991,BigInt可以達到數百萬個位數
//使用定義BigInt數字類型
var z = BigInt(9007199254740);
console.log(z);

 

 

1-5使用undefined未定義、null空值類型
undefined用於變數為未定義的值
Null用於變數為空值
//undefined,null
var abc: string = "123";
var u: undefined;
if (abc === u) {
    console.log(true)
} else {
    console.log(false)
}

 

 

1-6使用定義symbol符號值類型

ES6引入了新的Symbol類型,可用於定義為獨一無二唯一的值。

//使用定義Symbol字符號類型
var mysybol = Symbol("ABC");
console.log(mysybol);   // Symbol(ABC)
typeof(mysybol);        // "symbol"
// 相同参数 Symbol() 返回的值不相等
var mysybol2 = Symbol("abc");
console.log(mysybol === mysybol2);  // false

 

 

任務二:認識其它常用型別
2-1認識any任意型別

允許值為任意型別。

如果是一個普通型別,在賦值過程中改變型別是不被允許的。

 

但如果是 any型別,則允許被賦值為任意型別。

var myinfo: any = 'data';
myinfo = 123;

 

 

 

 

2-2認識Union聯合型別

 

表示取值可以為多種型別中的其一種。

//unionType
var myunion: string | number;
myunion = 'myinfo';
myunion = 123;

 

2-3 認識陣列型別
//陣列型別
var myarr: number[] = [1, 2, 3, 4, 5];
console.log(myarr); //[ 1, 2, 3, 4, 5 ]

//設定型別如果是number,那就只能是number,不能有其他型別
var myarr2: number[] = [1, 2, "C", 4, 5];
console.log(myarr2);
//拋錯:error TS2322: Type 'string' is not assignable to type 'number'.

 

 

 

也可以使用陣列泛型Array<elemType> 來表示陣列
//也可以使用陣列泛型(Array Generic) Array<elemType> 來表示陣列
var myarr: Array<string> = ["A","B","C","D","E"];
console.log(myarr);

 

 

 

 

讓陣列中也允許出現任意型別,可以使用 any 型別
//陣列中使用any型別
var myinfo: any[] = ['myinfo', 123, { city: 'taipei', age: 18 }];
console.log(myinfo)

 

2-4認識函式Function型別

 

設定傳入參數的型別name為字串型別,age為number型別
function datainfo(name: string, age: number) {
    console.log(`My name is ${name},I'm ${age} years old`);
    console.log("I'm " + age + "years old");
}
datainfo('John', 18);

一個函式有輸入和輸出型別設定

//函式型別
function cul(a: number, b: number): number {
    return a + b;
}
console.log(cul(1,2)); //3
export {}; //使用 ES Module

 

 

 

Yiru@Studio - 關於我 - 意如