iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

TypeScript 能手養成之旅系列 第 5

TypeScript 能手養成之旅 Day 5 原始型別

前言

前一天大致上了解一下,TypeScript 有支援哪些型別,從今天開始,將一一來每一個型別的定義和使用。

數字(Number)

TypeScript 的數字和 JavaScript 一樣都是浮點數,其型別寫法為 number

除了有支援 10 進位和 16 進位,另外在 ECMAScript 2015 引入 2 進位和 8 進位之後,也有支援。

let binaryLiteral: number = 0b1010; // ES6 中的二進位制表示法

let octalLiteral: number = 0o744; // ES6 中的八進位制表示法

經過編譯過後

var binaryLiteral = 10; // ES6 中的二進位制表示法

var octalLiteral = 484; // ES6 中的八進位制表示法

字串(String)

String 表示方式和 JavaScript 一樣,可以使用雙引號 "" 或單引號 '',當然也可以使用 ES6 引入的模板字串(template literal)。

let name: string = `CY`;
let age: number = 28;
let sentence: string = `Hello, my name is ${ name }.

I'll be ${ age + 1 } years old next month.`;

布林值(Boolean)

let isFund: boolean = true;

Undefined & Null

Undefined 和 Null 在 TypeScript 裡面一樣各自為一個型別,都是指無效,但兩者差異和在 JavaScript 一樣。

let cy: undefined = undefined;
let foo: null = null;

而在預設的情況下,nullundefined 是所有型別的子型別,所以可以賦值給其他型別,如下:

let num: number = undefined;

上面例子能成立,主要 strictNullChecks 要是 false才行。不過預設 strictNullChecks 就已經是 false。

Symbol 符號

在 ES6 後,加入的基礎型別,具有唯一性且不得改變。

而 symbol 的值是透過 Symbol 建構函式來創建。

let sym1 = Symbol("cy");
let sym2 = Symbol("cy");
sym1 === sym2; // false

symbol 也可以和字串一樣成為物件屬性的 key 值

let sym = Symbol();
let obj = {[sym]: "value"};
console.log(obj[sym]); // "value"

更多關於 symbol 的用法,TypeScript 都有支援。

結語

今天來了解原始型別是什麼,並去試著使用 TypeScript 來定義,萬丈高樓平地起,穩固目前學習到的,為明天的挑戰做準備。

參考文章

TypeSceipt 官網


上一篇
TypeScript 能手養成之旅 Day 4 基礎型別 & 擴充型別
下一篇
TypeScript 能手養成之旅 Day 6 物件型別-基礎物件型別
系列文
TypeScript 能手養成之旅16

尚未有邦友留言

立即登入留言