Typescript 基礎類型

基礎類型是我自定義的,主要這章介紹的在 Javascript 中都有的類型。另外,也是區別於下章進階類型(Javascript 沒有的數據類型)。javascript

基礎知識腦補下

在 JavaScript 的類型分爲兩種:java

  • 原始數據類型(Primitive data types)
  • 對象類型(Object types)

其中,原始數據類型包括:布爾值、數字、字符串、null、undefined 以及 ES6 中的新類型 Symbol。本章選擇性講前 5 種還有空值。git

布爾值

它是最基礎的數據類型,其值是 true/false。在 JavaScript 和 TypeScript 裏都使用 boolean 來定義(其它語言中也同樣)。github

// boolean.ts
let isDone: boolean = false;
複製代碼

編譯(tsc boolean.ts)後typescript

// boolean.js
var isDone = false;
複製代碼

問:使用構造函數 Boolean 來創造能夠麼?好比markdown

// boolean2.ts
let isDoneByNewBoolean: boolean = new Boolean(1);
複製代碼

編譯(編輯器裏)前編輯器

編譯後函數

問題在於 new Boolean(1) 返回的是一個對象。oop

再問:直接使用 Boolean(1) 怎樣?post

// boolean3.ts
let isDoneByBoolean: boolean = Boolean(1);
複製代碼

編譯後

// boolean3.js
var isDoneByBoolean = Boolean(1);
複製代碼

Boolean(1) 返回的是個布爾值。

數字

和 JavaScript 同樣,TypeScript 裏的全部數字都是浮點數,類型是 number

// number.ts
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010; // ES6 中的二進制表示法
let octalLiteral: number = 0o744;   // ES6 中的八進制表示法
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
複製代碼

編譯後

// number.ts
var decLiteral = 6;
var hexLiteral = 0xf00d;
var binaryLiteral = 10; // ES6 中的二進制表示法
var octalLiteral = 484; // ES6 中的八進制表示法
var notANumber = NaN;
var infinityNumber = Infinity;
複製代碼

字符串

和 JavaScript 同樣,使用 string 表示文本數據類型,能夠用**雙引號(")或單引號(')**表示字符串。

// string.ts
let str: string = 'Typescript';
let say: string = `Hello, ${str}`;
複製代碼

編譯後

// string.js
var str = 'Typescript';
var say = "Hello, " + str;
複製代碼

null 和 undefined

在 TypeScript 的世界裏,nullundefined 可用自身來定義數據類型。不過其用處不大。

// null-undefined.ts
let u: undefined = undefined;
let n: null = null;
複製代碼

編譯後

// null-undefined.js
var u = undefined;
var n = null;
複製代碼

問:那將值 nullundefined 換個位置會怎樣呢?

// null-undefined2.ts
let u: undefined = null;
let n: null = undefined;
複製代碼

編譯後

// null-undefined2.js
var u = null;
var n = undefined;
複製代碼

問:那像下面這樣呢?

// null-undefined3.ts
let nu: number = undefined;
let nn: number = null;

let su: string = undefined;
let sn: string = null;

let bu: boolean = undefined;
let bn: boolean = null;
複製代碼

編譯後

// null-undefined3.js
var nu = undefined;
var nn = null;
var su = undefined;
var sn = null;
var bu = undefined;
var bn = null;
複製代碼

從上面 3 個例子,可基本判斷,nullundefined 是全部類型的子類型(能夠把 nullundefined 賦值給 number 等全部類型的變量,也就是賦值沒多大意義)。

空值

在 JavaScript 的世界裏是沒有空值的概念,但在 TypeScript 中,能夠用 void 表示沒有任何返回值的函數。

// void.ts
function sayTs(): void {
    console.log('Hello, Typescript');
}

function sayTs2(): void {
    return 'Hello, Typescript';
}
複製代碼

編譯前

編譯後

但仍是編譯出來了

// void.js
function sayTs() {
    console.log('Hello, Typescript');
}
function sayTs2() {
    return 'Hello, Typescript2';
}
複製代碼

問:voidnull(或undefined)間關係如何?

// void2.ts
let u: void = undefined;
let n: void = null;
複製代碼

編譯後

// void2.js
var u = undefined;
var n = null;
複製代碼

問:voidstring(numberboolean)關係如何?

// void3.ts
let n: void = 1;
let b: void = false;
let s: void = '1';
複製代碼

編譯前

編譯後

但仍是編譯出來了

// void3.js
var vn = 1;
var vb = false;
var vs = '1';
複製代碼

總結下,只能將 undefinednull 和沒有返回值的函數賦值給 void(空值)類型。

本次代碼 Github

你能夠...

上一篇:Typescript 的成長環境

下一篇:Typescript 進階類型

目錄:Typescript 小書之入門篇

相關文章
相關標籤/搜索