TypeScript 面試題

一、TypeScript 是什麼?

JavaScript是一種解釋型的腳本語言,基於對象,跨平臺的特性,活躍於各大網站製作中。而TypeScript則是以JavaScript作爲基礎,並對其擴展的一種新的語言,

 

二、TypeScript 的內置數據類型有哪些?

數字類型:用於表示數字類型的值。TypeScript 中的所有數字都存儲爲浮點值。

let identifier: number = value;

字符串類型:用於字符串類型的值

let identifier: string = " ";

布爾類型: 一個邏輯二進制開關,包含true或false

let identifier: bool = Boolean value;

未定義類型:一個未定義的字面量,它是所有變量的起點。

let num: number = null;

void 類型:分配給沒有返回值的方法的類型。

let unusable: void = undefined;

三. 相比 JS Typescript 有哪些變動

1、數據類型方面

JavaScript 內數據類型

原始類型: number string boolean null undefinend symbol

複雜類型: 數組 對象 函數

TypeScript 內新增數據類型

聯合類型:聯合類型(Union Types)可以通過管道(|)將變量設置多種類型,賦值時可以根據設置的類型來賦值。例如:let var:string | number;只允許值的類型爲字符串或者數字
自定義類型:type

接口:爲使用該接口的對象定義契約或結構 (通常用於當一個對象類型被多次使用時,一般會使用接口(interface)來描述對象的類型)

元組:元組中允許存儲不同類型的元素,元組可以作爲參數傳遞給函數(類似數組格式)【number,string】
字面量類型:某個特定的字符串也可以作爲 TS 中的類型。任意的 JS 字面量(比如,對象、數字,字符串 等)都可以作爲類型使用,例如const a = ‘JS’,字面量類型爲字符串類型

枚舉:
都用來表示一組明確的可選值列表,枚舉與字面量類型+聯合類型組合的功能類似,
void:用於標識方法返回值的類型,表示該方法沒有返回值。

any:
因爲當值的類型爲 any 時,可以對該值進行任意操作,並且不會有代碼提示

2、增加了靜態類型

TypeScript對數據類型增加了約束,例如:username:string 代表限定 username這個變量只能接受 string 類型的參數。

好處:

(1)靜態編譯

通過這種對變量的約束,TypeScript可以擁有靜態類型檢查的功能,在程序運行之前便可以先一步檢測出錯誤。爲開發人員創建了一個更高效的編碼和調試過程。

(2)代碼重構

也正是因爲對於變量的約束,增強了代碼得可讀性。這降低我們在代碼重構方面的難度,讓我們可以更清楚地瞭解程序的結構,從而更好的優化程序。ps:此外,TypeScript也增加了一些小工具,讓程序員在修改代碼時更加得心應手。

壞處:

使代碼變得稍微冗雜,畢竟實現程序的功能根本不需要這些約束。
 

三、interface(接口)和 type(類型別名)的對比

  • 相同點:都可以給對象指定類型
  • 不同點:接口只能爲對象指定類型,類型別名,不僅可以爲對象指定類型,也可以爲任意類型指定別名
interface IPerson {
    name: string
    age: number
    sayHi(): void
}

type IPerson = {
    name: string
    age: number
    sayHi(): void
}

type NumStr = number | string

 

三、 TypeScript 的主要特點是什麼?

  • 跨平臺:TypeScript 編譯器可以安裝在任何操作系統上,包括 Windows、macOS 和 Linux。
  • ES6 特性:TypeScript 包含計劃中的 ECMAScript 2015 (ES6) 的大部分特性,例如箭頭函數。
  • 面向對象的語言:TypeScript 提供所有標準的 OOP 功能,如類、接口和模塊。
  • 靜態類型檢查:TypeScript 使用靜態類型並幫助在編譯時進行類型檢查。因此,你可以在編寫代碼時發現編譯時錯誤,而無需運行腳本。
  • 可選的靜態類型:如果你習慣了 JavaScript 的動態類型,TypeScript 還允許可選的靜態類型。
  • DOM 操作:您可以使用 TypeScript 來操作 DOM 以添加或刪除客戶端網頁元素。

 

四、使用 TypeScript 有什麼好處?

  • TypeScript 更具表現力,這意味着它的語法混亂更少
  • 由於高級調試器專注於在編譯時之前捕獲邏輯錯誤,因此調試很容易。
  • 靜態類型使 TypeScript 比 JavaScript 的動態類型更易於閱讀和結構化
  • 由於通用的轉譯,它可以跨平臺使用,在客戶端和服務器端項目中。

 

五、TypeScript 中的接口是什麼?

接口爲使用該接口的對象定義契約或結構 

interface IEmployee {
    empCode: number;
    empName: string;
    getSalary: (number) => number; // arrow function
    getManagerName(number): string; 
}

六、TypeScript 中的模塊是什麼?

TypeScript 中的模塊是相關變量、函數、類和接口的集合。

你可以將模塊視爲包含執行任務所需的一切的容器。可以導入模塊以輕鬆地在項目之間共享代碼

 

七、TypeScript 中如何檢查 null 和 undefined?

你可以使用 juggle-check(==),它檢查 null 和 undefined,或者使用 strict-check(===),它返回true設置爲null的值,並且不會評估true未定義的變量。

x == null

x === null

typeof x === ‘undefined’

 

八、TypeScript中如何實現函數重載?

要在 TypeScript 中重載函數,只需創建兩個名稱相同但參數/返回類型不同的函數兩個函數必須接受相同數量的參數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章