精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

40 道Typescript 面試題及其答案與代碼示例

開發 前端
在進行前端技術面試的時候,我們經常會遇到TypeScript 的一些面試題,因此,今天這篇文章,我整理匯總了40道關于TypeScript 的基礎知識的面試題。

在進行前端技術面試的時候,我們經常會遇到TypeScript 的一些面試題,因此,今天這篇文章,我整理匯總了40道關于TypeScript 的基礎知識的面試題。

在實際工作中,它的優勢在于提高開發人員的工作效率。

今天這期內容,主要是對 TypeScript 內容的特定面試題,并提供詳細的參考答案、代碼示例以及相關的延伸閱讀內容。

那么,我們現在就開始進入今天的內容吧。

1.什么是 TypeScript,它與 JavaScript 有何不同?提供 TypeScript 代碼示例。

答案:TypeScript 是 JavaScript 的超集,為該語言添加了靜態類型。它允許開發人員定義變量、函數參數和返回值的數據類型,這有助于在編譯時而不是運行時捕獲錯誤。這是一個例子:

function greet(name: string): string {
  return `Hello, ${name}!`;
}
const message: string = greet('John');
console.log(message); // Output: "Hello, John!"

延伸閱讀:TypeScript 官方網站(https://www.typescriptlang.org/)

2.解釋 TypeScript 中靜態類型的概念及其好處。

答案:TypeScript 中的靜態類型可以在開發過程中指定變量、函數參數和返回值的數據類型。這有助于及早捕獲與類型相關的錯誤,從而提高代碼質量和可維護性。

好處是擁有更好的代碼文檔、增強的工具支持以及提高的開發人員生產力。

延伸閱讀:TypeScript 官方手冊——基本類型(https://www.typescriptlang.org/docs/handbook/basic-types.html)

3.TypeScript 中的接口是什么?舉個例子。

答案:TypeScript 中的接口定義了對象結構的契約,指定其屬性和方法的名稱和類型。它們促進強大的類型檢查并實現更好的代碼組織。這是一個例子:

interface Person {
  name: string;
  age: number;
}
function greet(person: Person): string {
  return `Hello, ${person.name}! You are ${person.age} years old.`;
}
const john: Person = { name: 'John', age: 30 };
const message: string = greet(john);
console.log(message); // Output: "Hello, John! You are 30 years old."

延伸閱讀:TypeScript 官方手冊——接口(https://www.typescriptlang.org/docs/handbook/interfaces.html)

4.使用 TypeScript 相對于純 JavaScript 有什么好處?

答:TypeScript 提供了多種好處,包括靜態類型、更好的代碼分析和工具支持、改進的代碼可讀性、早期錯誤檢測、更輕松的代碼重構以及增強的代碼文檔。它還使開發人員能夠編寫更易于維護和擴展的應用程序。

延伸閱讀:TypeScript 官方網站 — 為什么選擇 TypeScript?(https://www.typescriptlang.org/docs/handbook/why-typescript.html)

5.如何在 TypeScript 的接口中定義可選屬性?舉個例子。

答案:您可以使用 ? 在接口中定義可選屬性。屬性名稱后面的修飾符。可選屬性可能存在于實現該接口的對象中,也可能不存在。這是一個例子:

interface Person {
  name: string;
  age?: number;
}
const john: Person = { name: 'John' };
const jane: Person = { name: 'Jane', age: 25 };

延伸閱讀:TypeScript 官方手冊——接口(https://www.typescriptlang.org/docs/handbook/interfaces.html)

6.解釋 TypeScript 中聯合類型的概念并提供示例。

答:聯合類型允許一個變量有多種類型。它通過使用 | 來表示類型之間的符號。這允許變量存儲任何指定類型的值。這是一個例子:

function printId(id: number | string): void {
  console.log(`ID: ${id}`);
}
printId(123); // Output: "ID: 123"
printId('abc'); // Output: "ID: abc"

延伸閱讀:TypeScript 官方手冊——聯合類型(https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html)

7.TypeScript 中的類型斷言是什么?舉個例子。

答案:當無法自動推斷類型時,TypeScript 中的類型斷言允許您顯式告訴編譯器變量的類型。這是使用 <type> 或 as type 語法實現的。這是一個例子:

let length: any = '5';
let numberLength: number = <number>length; // Using <type> syntax
let stringLength: number = length as number; // Using "as type" syntax

延伸閱讀:TypeScript 官方手冊——類型斷言(https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions)

8.如何在 TypeScript 中定義具有可選參數和默認參數的函數?舉個例子。

答案:您可以使用 ? 定義帶有可選參數和默認參數的函數。可選參數的修飾符以及為參數分配默認值。這是一個例子:

function greet(name: string, message: string = 'Hello', times?: number): void {
  for (let i = 0; i < (times || 1); i++) {
    console.log(`${message}, ${name}!`);
  }
}
greet('John'); // Output: "Hello, John!"
greet('Jane', 'Hi'); // Output: "Hi, Jane!"
greet('Tom', 'Hey', 3); // Output: "Hey, Tom!", "Hey, Tom!", "Hey, Tom!"

延伸閱讀:TypeScript 官方手冊——函數(https://www.typescriptlang.org/docs/handbook/functions.html)

9.TypeScript 中的泛型是什么?舉個例子。

答案:TypeScript 中的泛型允許您創建可與各種類型一起使用的可重用組件或函數。它們支持強類型,同時保持使用不同數據類型的靈活性。這是一個例子:

function identity<T>(arg: T): T {
  return arg;
}
const result1 = identity<number>(42); // Explicitly specifying the type
const result2 = identity('hello'); // Inferring the type

延伸閱讀:TypeScript 官方手冊——泛型(https://www.typescriptlang.org/docs/handbook/generics.html)

10.通過示例解釋 TypeScript 中的“keyof”關鍵字。

答案:TypeScript 中的“keyof”關鍵字是一個類型運算符,它返回表示對象鍵的文字類型的聯合。它允許您對對象鍵執行類型安全操作。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type PersonKeys = keyof Person; // "name" | "age"

延伸閱讀:TypeScript 官方手冊——索引類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types)

11. TypeScript 中的類型保護是什么?它們如何工作?舉個例子。

答案:類型防護是 TypeScript 表達式,它在運行時檢查變量的類型,并允許您根據類型執行不同的操作。它們可以實現更好的類型推斷,并提供一種更有效地處理聯合類型的方法。

這是使用 typeof 和 instanceof 類型保護的示例:

function printValue(value: string | number): void {
  if (typeof value === 'string') {
    console.log(`The value is a string: ${value}`);
  } else if (typeof value === 'number') {
    console.log(`The value is a number: ${value}`);
  }
}
class Person {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
}
function greet(person: Person | string): void {
  if (person instanceof Person) {
    console.log(`Hello, ${person.name}!`);
  } else if (typeof person === 'string') {
    console.log(`Hello, ${person}!`);
  }
}
const stringValue: string = 'Hello';
const numberValue: number = 42;


printValue(stringValue); // Output: "The value is a string: Hello"
printValue(numberValue); // Output: "The value is a number: 42"


const john: Person = new Person('John');


greet(john); // Output: "Hello, John!"
greet('Jane'); // Output: "Hello, Jane!"

延伸閱讀:TypeScript 官方手冊 — Type Guards(https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards)

12.解釋 TypeScript 中條件類型的概念。舉個例子。

答案:TypeScript 中的條件類型允許您創建依賴于條件的類型。它們用于根據類型之間的關系執行類型推斷。這是一個例子:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
function add(a: number, b: number): number {
  return a + b;
}
type AddReturnType = ReturnType<typeof add>; // number

在此示例中,ReturnType 是推斷函數返回類型的條件類型。

延伸閱讀:TypeScript 官方手冊——條件類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)

13.TypeScript 中的映射類型是什么?舉個例子。

答案:TypeScript 中的映射類型允許您通過將屬性映射到新類型來基于現有類型創建新類型。它們使您能夠輕松修改現有類型或向現有類型添加屬性。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type PersonWithOptionalProperties = { [K in keyof Person]?: Person[K] };
const john: Person = { name: 'John', age: 30 };
const johnWithOptionalProperties: PersonWithOptionalProperties = { name: 'John' };

在此示例中,PersonWithOptionalProperties 是一個映射類型,它使 Person 的所有屬性都是可選的。

延伸閱讀:TypeScript 官方手冊 — 映射類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types)

14.解釋 TypeScript 中的“部分”實用程序類型。舉個例子。

答案:TypeScript 中的“部分”實用程序類型用于使現有類型的所有屬性成為可選。它允許您從現有類型創建具有可選屬性的新類型。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type PartialPerson = Partial<Person>;
const john: PartialPerson = { name: 'John' };

在此示例中,PartialPerson 是具有來自 Person 接口的可選屬性的類型。

延伸閱讀:TypeScript 官方手冊——實用類型(https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype)

15.TypeScript 中的“只讀”實用程序類型是什么?它是如何工作的?舉個例子。

答案:TypeScript 中的“Readonly”實用程序類型用于使現有類型的所有屬性變為只讀。它可以防止對象創建后修改其屬性。這是一個例子:

interface Person {
  readonly name: string;
  age: number;
}
const john: Readonly<Person> = { name: 'John', age: 30 };
john.age = 31; // Error: Cannot assign to 'age' because it is a read-only property.

在此示例中,age 屬性可以修改,但 name 屬性是只讀的。

延伸閱讀:TypeScript 官方手冊——實用類型(

16.映射類型中的“鍵重新映射”和“值重新映射”是什么?為每個提供示例。

回答:“鍵重映射”和“值重映射”是 TypeScript 中映射類型的兩個特性。

“鍵重新映射”允許您使用 as 關鍵字更改現有類型的鍵。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type MappedPerson = { [K in keyof Person as `new_${K}`]: Person[K] };
const john: MappedPerson = { new_name: 'John', new_age: 30 };

在此示例中,Person 的鍵被重新映射為具有前綴“new_”。

“值重新映射”允許您使用條件類型更改現有類型的值。這是一個例子:

type ValueRemapped<T> = T extends 'a' ? 'x' : T extends 'b' ? 'y' : 'z';
type Result = ValueRemapped<'a' | 'b' | 'c'>; // Result: 'x' | 'y' | 'z'

在此示例中,值“a”、“b”和“c”分別重新映射為“x”、“y”和“z”。

延伸閱讀:TypeScript 官方手冊 — 映射類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types)

17.解釋 TypeScript 中的“Pick”實用程序類型。舉個例子。

答案:TypeScript 中的“Pick”實用程序類型允許您通過從現有類型中選擇特定屬性來創建新類型。它有助于創建現有類型的子集。這是一個例子:

interface Person {
  name: string;
  age: number;
  city: string;
}
type PersonInfo = Pick<Person, 'name' | 'age'>;
const john: PersonInfo = { name: 'John', age: 30 };

在此示例中,PersonInfo 是僅包含 Person 接口中的“name”和“age”屬性的類型。

延伸閱讀:TypeScript 官方手冊——實用類型(https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys)

18.TypeScript 中的“Omit”實用程序類型是什么?它是如何工作的?舉個例子。

答案:TypeScript 中的“Omit”實用程序類型允許您通過從現有類型中排除特定屬性來創建新類型。它有助于創建刪除了某些屬性的類型。這是一個例子:

interface Person {
  name: string;
  age: number;
  city: string;
}
type PersonWithoutCity = Omit<Person, 'city'>;
const john: PersonWithoutCity = { name: 'John', age: 30 };

在此示例中,PersonWithoutCity 是一種從 Person 接口中排除“city”屬性的類型。

延伸閱讀:TypeScript 官方手冊——實用類型(https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys)

19.TypeScript 中的“條件映射類型”是什么?舉個例子。

答:條件映射類型將條件類型和映射類型結合起來,根據條件執行類型轉換。它們允許您根據現有類型的屬性創建動態類型。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type MappedConditional<T> = {
  [K in keyof T]: T[K] extends number ? string : T[K];
};
const john: MappedConditional<Person> = { name: 'John', age: '30' };

在此示例中,MappedConditional 是一個條件映射類型,它將 Person 的數字屬性轉換為字符串。

延伸閱讀:TypeScript 官方手冊 — 映射類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)

20.條件類型中“keyof”和“in”關鍵字的用途是什么?舉個例子。

答案:條件類型中的“keyof”關鍵字用于獲取對象類型的鍵的并集。它允許您以類型安全的方式使用對象的鍵。“in”關鍵字檢查屬性鍵是否存在于從“keyof”獲得的鍵的并集中。這是一個例子:

type CheckKey<T, K extends keyof T> = K extends 'name' ? true : false;
interface Person {
  name: string;
  age: number;
}
type IsNameKey = CheckKey<Person, 'name'>; // Result: true
type IsCityKey = CheckKey<Person, 'city'>; // Result: false

在此示例中,CheckKey 是一個條件類型,用于檢查提供的鍵是否為“name”。

延伸閱讀:TypeScript 官方手冊 — keyof Type Operator、TypeScript 官方手冊 — in Operator(https://www.typescriptlang.org/docs/handbook/advanced-types.html#keyof-type-operator)

21.解釋 TypeScript 中的“排除”實用程序類型。舉個例子。

答案:TypeScript 中的“排除”實用程序類型允許您通過從聯合中排除某些類型來創建新類型。它有助于創建聯合類型的子集。這是一個例子:

type Color = 'red' | 'green' | 'blue';
type PrimaryColors = Exclude<Color, 'green' | 'blue'>;
const primary: PrimaryColors = 'red'; // Okay
const invalidColor: PrimaryColors = 'green'; // Error: Type '"green"' is not assignable to type 'PrimaryColors'.

在此示例中,PrimaryColors 是一種從顏色聯合中排除“綠色”和“藍色”顏色的類型。

延伸閱讀:TypeScript 官方手冊——實用類型(https://www.typescriptlang.org/docs/handbook/utility-types.html#excludetype-excludedunion)

22.TypeScript 中的“模板文字類型”是什么?舉個例子。

答案:TypeScript 中的模板文字類型允許您使用模板文字語法來操作類型中的字符串。它們提供了一種基于字符串模式創建復雜類型的方法。這是一個例子:

type Greeting<T extends string> = `Hello, ${T}!`;
type GreetJohn = Greeting<'John'>; // Result: "Hello, John!"
type GreetJane = Greeting<'Jane'>; // Result: "Hello, Jane!"

在此示例中,Greeting 是一個模板文字類型,它根據提供的名稱生成問候語。

延伸閱讀:TypeScript 官方手冊——模板文字類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#template-literal-types)

23.解釋條件類型中的“infer”關鍵字。舉個例子。

答案:條件類型中的“infer”關鍵字用于從條件類型中的另一種類型推斷出類型。它允許您捕獲類型并將其分配給類型變量。這是一個例子:

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
function add(a: number, b: number): number {
  return a + b;
}
type AddReturnType = ReturnType<typeof add>; // Result: number

在此示例中,ReturnType 是一個條件類型,它使用“infer”關鍵字推斷函數的返回類型。

延伸閱讀:TypeScript 官方手冊——條件類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)

24.TypeScript 中的“keyof”和“typeof”關鍵字有何用途?為每個提供示例。

答:“keyof”關鍵字用于獲取對象類型的鍵的并集,“typeof”關鍵字用于獲取值的類型。以下是每個示例:

interface Person {
  name: string;
  age: number;
}
type PersonKeys = keyof Person; // Result: "name" | "age"
const john = { name: 'John', age: 30 };
type JohnType = typeof john; // Result: { name: string, age: number }

在第一個示例中,PersonKeys 是表示 Person 接口的鍵聯合的類型。在第二個示例中,JohnType 是表示 john 對象類型的類型。

延伸閱讀:TypeScript 官方手冊 — keyof 類型運算符、TypeScript 官方手冊 — typeof 類型運算符(https://www.typescriptlang.org/docs/handbook/advanced-types.html#keyof-type-operator)

25.TypeScript 中的“const 斷言”是什么?舉個例子。

答案:TypeScript 中的“Const 斷言”允許您通知編譯器特定的文字表達式應被視為文字而不是擴展類型。這是一個例子:

function getConfig() {
  const config = {
    apiUrl: 'https://api.example.com',
    timeout: 5000,
  } as const;
  return config;
}
const config = getConfig();
// config is inferred as:
// {
//   readonly apiUrl: "https://api.example.com";
//   readonly timeout: 5000;
// }

在此示例中,由于 as const 斷言,config 對象被視為具有只讀屬性的常量對象。

延伸閱讀:TypeScript官方手冊——文字類型加寬(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions)

26.TypeScript 中的“私有”和“受保護”訪問修飾符是什么?為每個提供示例。

答案:“Private”和“protected”是 TypeScript 中的訪問修飾符,用于控制類成員的可見性和可訪問性。

class Person {
  private name: string;
  protected age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`Hello, my name is ${this.name}, and I am ${this.age} years old.`);
  }
}
class Employee extends Person {
  private salary: number;
  constructor(name: string, age: number, salary: number) {
    super(name, age);
    this.salary = salary;
  }
  showSalary() {
    console.log(`My salary is ${this.salary}.`);
  }
}
const john = new Person('John', 30);
console.log(john.name); // Error: Property 'name' is private and only accessible within class 'Person'.
console.log(john.age); // Error: Property 'age' is protected and only accessible within class 'Person' and its subclasses.
const employee = new Employee('Jane', 25, 50000);
employee.greet(); // Output: "Hello, my name is Jane, and I am 25 years old."
employee.showSalary(); // Output: "My salary is 50000."
console.log(employee.salary); // Error: Property 'salary' is private and only accessible within class 'Employee'.

在此示例中,name 屬性具有“private”訪問修飾符,age 屬性有“protected”訪問修飾符。工資屬性是 Employee 類私有的。

延伸閱讀:TypeScript 官方手冊——類(https://www.typescriptlang.org/docs/handbook/classes.html)

27.解釋 TypeScript 條件類型中的“keyof T extends K”構造。舉個例子。

答案:TypeScript 條件類型中的“keyof T extends K”構造用于使用“extends”關鍵字根據指定條件過濾對象類型的鍵。這是一個例子:

type FilterProperties<T, K> = {
  [P in keyof T as T[P] extends K ? P : never]: T[P];
};
interface Person {
  name: string;
  age: number;
  email: string;
}
type StringProperties = FilterProperties<Person, string>;
// Result: {
//   name: string;
//   email: string;
// }
type NumberProperties = FilterProperties<Person, number>;
// Result: {
//   age: number;
// }

在此示例中,FilterProperties 是一個條件映射類型,它根據值類型過濾 Person 的屬性。

延伸閱讀:TypeScript 官方手冊——條件類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)

28.TypeScript 中的“mixins”是什么?舉個例子。

答案:TypeScript 中的 Mixins 允許您通過將某個類與一個或多個其他類組合來向該類添加行為。它支持代碼重用和組合。這是一個 mixin 的例子:

class Printable {
  print() {
    console.log(this.toString());
  }
}
class MyObject {
  constructor(private name: string) {}
  toString() {
    return `Object: ${this.name}`;
  }
}
interface MyObject extends Printable {}
const myObj = new MyObject('example');
myObj.print(); // Output: "Object: example"

在此示例中,Printable 類充當 mixin,將 print 方法添加到 MyObject 類。

延伸閱讀:TypeScript 官方手冊 — Mixins(https://www.typescriptlang.org/docs/handbook/mixins.html)

29.解釋 TypeScript 中“聲明合并”的概念。舉個例子。

回答:TypeScript 中的“聲明合并”是編譯器將同一實體的多個聲明合并到單個定義中的過程。它允許您擴展接口、函數、類和枚舉。

interface Person {
  name: string;
}
interface Person {
  age: number;
}
const john: Person = { name: 'John', age: 30 };
console.log(john); // Output: { name: 'John', age: 30 }

在此示例中,編譯器將兩個 Person 接口合并為一個定義,允許 john 同時具有 name 和age 屬性。

延伸閱讀:TypeScript官方手冊——聲明合并(https://www.typescriptlang.org/docs/handbook/declaration-merging.html)

30.TypeScript 中的“noUncheckedIndexedAccess”編譯器選項是什么?為什么它很有用?舉個例子。

答案:TypeScript 中的“noUncheckedIndexedAccess”編譯器選項用于在使用索引訪問屬性時捕獲潛在的未定義或空值。它通過避免運行時錯誤來幫助提高代碼安全性。

// tsconfig.json
{
  "compilerOptions": {
    "noUncheckedIndexedAccess": true
  }
}

這是一個例子:

const data: { [key: string]: number } = {
  apple: 1,
  banana: 2,
};
const fruit = 'pear';
const count = data[fruit]; // Error: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ apple: number; banana: number; }'.

在此示例中,啟用“noUncheckedIndexedAccess”會引發錯誤,因為 data[fruit] 可能未定義或為 null。

進一步閱讀:TypeScript 編譯器選項(https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess)

31.TypeScript 中的“裝飾器”是什么?舉個例子。

答:裝飾器是 TypeScript 的一項功能,允許您修改類、方法或屬性的行為。它們使用 @decoratorName 語法聲明并在運行時執行。這是一個簡單的類裝飾器的示例:

function MyClassDecorator<T extends { new (...args: any[]): {} }>(constructor: T) {
  return class extends constructor {
    newProperty = 'decorated property';
    hello = 'overridden';
  };
}
@MyClassDecorator
class MyClass {
  hello: string;
  constructor() {
    this.hello = 'world';
  }
}
const myClassInstance = new MyClass();
console.log(myClassInstance.hello); // Output: "overridden"
console.log((myClassInstance as any).newProperty); // Output: "decorated property"

在此示例中,MyClassDecorator 函數是一個類裝飾器,用于修改 MyClass 類的行為。

延伸閱讀:TypeScript 官方手冊——裝飾器(https://www.typescriptlang.org/docs/handbook/decorators.html)

32.解釋 TypeScript 中的“abstract”關鍵字。舉個例子。

答:TypeScript 中的“abstract”關鍵字用于定義抽象類和方法。抽象類不能直接實例化;它們只能被延長。抽象方法在抽象類中沒有實現,必須在派生類中實現。這是一個例子:

abstract class Shape {
  abstract area(): number;
}
class Circle extends Shape {
  constructor(private radius: number) {
    super();
  }
  area(): number {
    return Math.PI * this.radius ** 2;
  }
}
const circle = new Circle(5);
console.log(circle.area()); // Output: 78.53981633974483

在此示例中,Shape 類是一個具有抽象方法 area() 的抽象類。Circle 類擴展了 Shape 類并實現了 area() 方法。

延伸閱讀:TypeScript官方手冊——抽象類(https://www.typescriptlang.org/docs/handbook/classes.html#abstract-classes)

33.什么是 TypeScript 中的“條件類型”,它們為什么有用?舉個例子。

答案:TypeScript 中的條件類型允許您根據條件執行類型轉換。它們使您能夠創建依賴于其他類型之間關系的動態類型。這是一個例子:

type IsString<T> = T extends string ? true : false;
type CheckString = IsString<string>; // Result: true
type CheckNumber = IsString<number>; // Result: false

在此示例中,IsString 條件類型檢查提供的類型是否為字符串。

當您想要基于其他值的類型創建類型安全的映射或過濾器時,條件類型非常有用。

延伸閱讀:TypeScript 官方手冊——條件類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)

34.TypeScript 中屬性的“只讀”修飾符是什么?舉個例子。

答案:TypeScript 中的“readonly”修飾符用于使類或接口的屬性變為只讀,這意味著它們的值一旦設置就無法更改。這是一個例子:

class Person {
  readonly name: string;
  constructor(name: string) {
    this.name = name;
  }
}
const john = new Person('John');
console.log(john.name); // Output: "John"
john.name = 'Jane'; // Error: Cannot assign to 'name' because it is a read-only property.

在此示例中,Person 類的 name 屬性被標記為只讀。

延伸閱讀:TypeScript 官方手冊——類(https://www.typescriptlang.org/docs/handbook/classes.html#readonly-modifier)

35.解釋 TypeScript 中的“as const”斷言。舉個例子。

答案:TypeScript 中的“as const”斷言用于推斷數組和對象的文字類型。它告訴編譯器該值應被視為常量,而不是擴展到其基本類型。這是一個例子:

const fruits = ['apple', 'banana'] as const;
const person = {
  name: 'John',
  age: 30,
} as const;
// The type of fruits is: readonly ["apple", "banana"]
// The type of person is: {
//   readonly name: "John";
//   readonly age: 30;
// }

在此示例中,fruits 數組和 person 對象的類型分別被推斷為只讀元組和對象。

延伸閱讀:TypeScript 官方手冊——文字類型(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions)

36.TypeScript 中的“模塊增強”是什么?舉個例子。

答案:TypeScript 中的模塊擴充允許您在外部模塊中添加新聲明或擴展現有聲明。當您想要向第三方庫添加功能時,它非常有用。這是一個例子:

// Original module in a third-party library
// external-library.d.ts
declare module 'external-library' {
  export function greet(name: string): string;
}
// Augment the module
// augmentations.d.ts
declare module 'external-library' {
  export function goodbye(name: string): string;
}
// Usage
import { greet, goodbye } from 'external-library';
console.log(greet('John')); // Output: "Hello, John!"
console.log(goodbye('John')); // Output: "Goodbye, John!"

在此示例中,我們通過添加 goodbye 函數來增強“external-library”模塊。

延伸閱讀:TypeScript 官方手冊——模塊增強(https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation)

37.TypeScript 中的“keyof”運算符有何用途?舉個例子。

答案:TypeScript 中的“keyof”運算符用于獲取對象類型的鍵的并集。它允許您以類型安全的方式使用對象的鍵。這是一個例子:

interface Person {
  name: string;
  age: number;
}
type PersonKeys = keyof Person; // Result: "name" | "age"

在此示例中,PersonKeys 是表示 Person 接口的鍵的并集的類型。

延伸閱讀:TypeScript官方手冊——keyof類型運算符(https://www.typescriptlang.org/docs/handbook/advanced-types.html#keyof-type-operator)

38.TypeScript 中“typeof”運算符的用途是什么?舉個例子。

答案:TypeScript 中的“typeof”運算符用于在編譯時獲取值或變量的類型。當您想要根據變量的類型執行類型檢查時,它非常有用。這是一個例子:

const name = 'John';
type NameType = typeof name; // Result: string
function printType(value: any): void {
  const type = typeof value;
  console.log(`The type of ${value} is ${type}.`);
}
printType(42); // Output: "The type of 42 is number."
printType(true); // Output: "The type of true is boolean."
printType('Hello'); // Output: "The type of Hello is string."

在此示例中,NameType 類型被推斷為字符串,因為 name 變量具有字符串值。

延伸閱讀:TypeScript官方手冊——typeof類型運算符(https://www.typescriptlang.org/docs/handbook/advanced-types.html#typeof-type-operator)

39.TypeScript 接口中的“索引簽名”是什么?舉個例子。

答案:TypeScript 接口中的索引簽名允許您根據屬性的名稱定義屬性的類型。它們用于定義具有動態屬性名稱的對象。這是一個例子:

interface Dictionary {
  [key: string]: number;
}
const data: Dictionary = {
  apple: 1,
  banana: 2,
};
const value = data['banana'];
console.log(value); // Output: 2

在此示例中,Dictionary 接口允許您使用字符串鍵和數字值定義對象。

進一步閱讀:TypeScript 官方手冊 — 可索引類型(https://www.typescriptlang.org/docs/handbook/advanced-types.html#indexable-types)

40.TypeScript 中的“類型謂詞”是什么?舉個例子。

答案:TypeScript 中的類型謂詞用于縮小條件塊中值的類型范圍。它們提供了一種執行類型檢查并獲取更具體類型的方法。這是一個例子:

function isString(value: any): value is string {
  return typeof value === 'string';
}
function printLength(value: string | number): void {
  if (isString(value)) {
    console.log(`The length of the string is ${value.length}.`);
  } else {
    console.log(`The value is a number: ${value}`);
  }
}
printLength('Hello'); // Output: "The length of the string is 5."
printLength(42); // Output: "The value is a number: 42."

在此示例中,isString 函數是一個類型謂詞,用于檢查值是否為字符串。

外部鏈接:TypeScript 官方手冊 — 用戶定義的類型防護(https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards)

總結

以上就是我今天這篇文章的全部內容,希望對你有所幫助,如果喜歡這篇文章的話,請記得關注我。

責任編輯:華軒 來源: web前端開發
相關推薦

2023-11-27 16:11:14

Web 開發HTML

2021-05-08 14:20:27

Redis面試數據庫

2018-02-25 16:35:32

前端CSS面試題

2019-05-15 16:45:13

SpringBoot面試題Java

2023-09-21 14:55:24

Web 開發TypeScript

2024-06-04 14:52:28

2023-09-26 22:19:36

Java限流器

2010-11-26 10:53:29

戴爾

2017-09-25 10:00:18

Hadoop面試題答案解析

2021-03-19 11:08:27

開發技能代碼

2016-12-19 10:05:01

數據面試題PCA

2025-08-19 09:28:53

2024-02-26 15:35:44

2024-04-15 08:34:43

2024-04-28 08:23:18

2024-01-01 15:30:59

JavaScriptWeb 應用程序開發

2019-08-09 09:50:38

Java編程語言面試題

2022-02-11 14:01:22

底層String字符串

2020-11-13 16:00:57

SpringCloud面試架構

2024-10-11 17:09:27

點贊
收藏

51CTO技術棧公眾號

亚欧洲精品在线视频| 丰满少妇一区二区三区专区| 第九色区av在线| 精彩视频一区二区| 欧美国产中文字幕| 免费黄色在线视频| 99视频有精品高清视频| 黄网站色欧美视频| 亚洲人成网站在线观看播放| 亚洲国产精品欧美久久| 天堂影院一区二区| 欧美贵妇videos办公室| 99久久久无码国产精品衣服| 亚洲国产视频二区| 在线观看亚洲精品| 亚洲国产成人精品无码区99| 在线观看a视频| 成人av电影免费在线播放| 国产精品日韩专区| 在线观看国产亚洲| 亚洲区综合中文字幕日日| 日韩国产高清视频在线| 日韩在线一区视频| 老司机2019福利精品视频导航| 亚洲日本青草视频在线怡红院| 久久99精品国产99久久| 99久久精品免费看国产交换| 日韩精品一级中文字幕精品视频免费观看 | 亚洲精品久久久久久无码色欲四季 | 国产婷婷在线视频| 日韩激情在线观看| 26uuu久久噜噜噜噜| 538任你躁在线精品视频网站| 中文字幕伦av一区二区邻居| 精品国产免费一区二区三区香蕉| 中文字幕一区久久| 国产在线|日韩| 岛国av一区二区在线在线观看| 欧美日韩一区二区三区电影| 伊人免费在线| 欧美韩国日本不卡| 欧美一区二区福利| 天天影院图片亚洲| av成人免费在线| 国产伦精品一区二区三区视频免费 | heyzo高清在线| 亚洲精品免费一二三区| 日本三级福利片| av网站有哪些| 8x国产一区二区三区精品推荐| 制服丝袜国产精品| 日韩在线不卡一区| 青草综合视频| 欧美男女性生活在线直播观看| wwwwww.色| 99只有精品| 欧美午夜精品久久久久久孕妇| 国产精品少妇在线视频| 婷婷六月国产精品久久不卡| 国产农村妇女精品| 日本一区二区三区免费看| 欧美一区二区少妇| 久久精品免费在线观看| 日韩在线导航| 老司机精品视频在线观看6| 国产精品毛片久久久久久| 一本久久a久久精品vr综合| 69久久精品| 中文字幕日本乱码精品影院| 欧美日韩一区二区三区电影| 五月婷婷视频在线观看| 亚洲成人在线免费| 成人毛片视频网站| 欧美日韩视频免费观看| 欧美日韩一区二区在线观看| 国产精品嫩草影院8vv8| 永久免费精品视频| 亚洲国产另类久久精品| 亚洲欧美色图视频| 欧美日韩在线观看视频小说| 少妇激情综合网| 伊人在线视频观看| 激情欧美日韩| 国产suv精品一区二区三区88区| 中文天堂在线播放| 国产精品系列在线播放| 精品蜜桃一区二区三区| 国产福利第一视频在线播放| **爰片久久毛片| 成人国产一区二区三区精品| 精品欧美日韩在线| 国产三级视频在线| 亚洲天堂久久久久久久| 久久久久99精品成人片| 卡通欧美亚洲| 日韩欧美一区在线观看| 人人妻人人藻人人爽欧美一区| 精品日产免费二区日产免费二区| 久久天天躁日日躁| 国产又大又黄视频| 国产综合成人久久大片91| 精品国产一区二区三区麻豆小说| av中文在线| 亚洲sss视频在线视频| 在线免费av播放| 老司机在线精品视频| 中文字幕最新精品| 天海翼一区二区| 久久er精品视频| 久久国产精品-国产精品| av中文资源在线| 欧美日韩另类在线| 欧美色图校园春色| 精品福利久久久| 欧美国产视频日韩| 一级片aaaa| 久久免费美女视频| 六月婷婷在线视频| 国产精品美女久久久久| 中文字幕av一区中文字幕天堂 | 亚洲观看黄色网| 亚洲综合自拍| 国产精品入口福利| 欧美日韩国产中文字幕在线| 亚洲精品第1页| 超碰人人草人人| 日韩午夜电影网| 日韩免费在线播放| 天天爽夜夜爽夜夜爽| 一区二区三区四区乱视频| 国产又大又黄又粗又爽| 免费av一区二区三区四区| 久久久久久久久久久免费精品| 国产又黄又粗又硬| 中文字幕一区免费在线观看| 无码人妻丰满熟妇区毛片| 少妇久久久久| 97人人做人人爱| 亚洲伦理在线观看| 亚洲一区二区在线视频| 1314成人网| 亚洲免费二区| 91亚洲精品丁香在线观看| 午夜伦全在线观看| 欧美日韩中文字幕精品| 日韩欧美黄色网址| 日本欧美大码aⅴ在线播放| 欧美亚洲另类在线一区二区三区| 成人一级福利| 日韩国产高清污视频在线观看| 欧美极品影院| 亚洲一区二区精品3399| www.久久com| 先锋资源久久| 亚洲一区二区久久久久久久| 色综合久久影院| 欧美久久久久久久久中文字幕| 国产亚洲精品精品精品| 蜜桃一区二区三区在线观看| 亚洲成人18| 日韩一区中文| 久久99国产综合精品女同| 亚洲国产综合一区| 亚洲线精品一区二区三区 | 成人在线免费av| 一区二区av在线| 中文在线最新版天堂| 国产精品污网站| 三年中文在线观看免费大全中国| 一区二区三区四区电影| 国产高清在线一区| 性欧美18一19sex性欧美| 国产一区二区三区高清在线观看| 在线观看国产精品入口男同| 亚洲视频在线一区观看| 成人做爰www看视频软件| 99在线|亚洲一区二区| 欧美成人综合一区| 色综合视频一区二区三区日韩| 欧美成人三级视频网站| 同心难改在线观看| 欧美日韩精品欧美日韩精品一| 91麻豆免费视频网站| 成人一区二区三区在线观看| 欧美v在线观看| 91成人影院| 久久久久久国产精品mv| 韩国精品视频在线观看| 国内精品在线一区| 二区三区在线播放| 精品嫩草影院久久| 波多野结衣人妻| 亚洲精品国产一区二区三区四区在线| aaaa黄色片| 日本成人在线一区| 大胆欧美熟妇xx| av伊人久久| 国产精品二区在线| 成人福利一区二区| 欧美极品第一页| 成a人片在线观看www视频| 精品久久久久久综合日本欧美| 黄色av一区二区| 亚洲午夜激情av| 大吊一区二区三区| 亚洲欧洲日韩| 欧美凹凸一区二区三区视频| 国内不卡的一区二区三区中文字幕| 97人人爽人人喊人人模波多| 麻豆传媒在线完整视频| 91福利在线播放| 老妇女50岁三级| 久久久国际精品| 亚洲香蕉中文网| 国产一区二区三区精品欧美日韩一区二区三区 | 天天综合在线视频| 欧美一区二区三区公司| а中文在线天堂| 五月激情综合网| 免费中文字幕在线| 国产精品电影一区二区三区| 成人网站免费观看| 成人综合激情网| 亚洲黄色片免费看| 精品一区二区三区在线观看国产| 国产免费成人在线| 雨宫琴音一区二区在线| 黑人巨茎大战欧美白妇| 91综合久久| 亚洲高清在线观看一区| 欧美美乳视频| 久久免费99精品久久久久久| 成人性生交大片免费看中文视频 | xvideos.蜜桃一区二区| 91精品久久久久久久久久入口 | 在线电影欧美成精品| 中文字幕手机在线视频| 欧美视频在线观看 亚洲欧| 国产无套内射又大又猛又粗又爽| 一区二区三区在线视频观看58| 秋霞欧美一区二区三区视频免费| 国产欧美综合在线观看第十页| 五级黄高潮片90分钟视频| caoporn国产精品| 91丨porny丨对白| 99久久婷婷国产综合精品| 黄色国产在线视频| 成人白浆超碰人人人人| 大乳护士喂奶hd| 91污在线观看| 亚洲精品成人无码熟妇在线| 久久女同精品一区二区| 99精品欧美一区二区| 国产精品无圣光一区二区| 在线观看日本黄色| ●精品国产综合乱码久久久久| 久久福利免费视频| 亚洲蜜臀av乱码久久精品| 久久久www成人免费毛片| 性做久久久久久| 久久精品视频7| 欧洲精品中文字幕| 国产乱码一区二区| 精品美女一区二区三区| 天天干天天做天天操| 日韩av影视在线| 国模精品一区二区| 日韩小视频在线| 日本在线视频网址| 2018日韩中文字幕| 丁香久久综合| 99热在线播放| 日韩伦理一区二区三区| 视频在线精品一区| 一区二区电影| 国产综合av在线| 日本一不卡视频| 九色91porny| 91丝袜美腿高跟国产极品老师 | 亚洲综合一区二区| 在线观看亚洲欧美| 欧美中文字幕亚洲一区二区va在线| 97精品人妻一区二区三区香蕉 | 天堂www中文在线资源| 26uuu久久天堂性欧美| 黑人狂躁日本娇小| 亚欧色一区w666天堂| 中文字幕在线一| 亚洲精品不卡在线| 蜜桃视频网站在线观看| 国a精品视频大全| 亚洲a∨精品一区二区三区导航| 成人免费福利视频| 人人精品亚洲| 中文字幕不卡每日更新1区2区| 一区在线视频| 免费av不卡在线| 久久免费视频一区| 久久国产免费观看| 国产精品萝li| 久久久久99精品| 欧美色图一区二区三区| 免费看av毛片| 日韩有码在线观看| 国模冰冰炮一区二区| 成人av蜜桃| 五月天综合网站| 日韩一级在线免费观看| 国产99精品视频| 波多野结衣欲乱| 91黄色免费版| 深夜福利视频网站| 欧美巨大黑人极品精男| 国产精品第一国产精品| 欧美午夜免费| 国产欧美在线| 老熟女高潮一区二区三区| 国产精品福利一区二区三区| 国产一级片毛片| 亚洲国产一区二区三区四区| av片哪里在线观看| 国产日韩欧美日韩| 欧美日韩一二三四| 亚洲爆乳无码专区| 99视频一区二区三区| 免费中文字幕在线观看| 91精品一区二区三区久久久久久| 国产小视频免费在线网址| 91精品国产一区| 国产女人18毛片水真多18精品| 特色特色大片在线| 麻豆精品久久久| 九九热久久免费视频| 欧美色图一区二区三区| 成人动漫在线免费观看| 国产精品扒开腿做爽爽爽视频| 天海翼亚洲一区二区三区| 免费在线观看视频a| 不卡欧美aaaaa| 青青草av在线播放| 日韩成人中文字幕| 欧美大胆a人体大胆做受| 精品一区久久| aa级大片欧美三级| 精品人妻一区二区三区日产乱码卜| 午夜欧美大尺度福利影院在线看| 亚洲精品视频专区| 97久久久免费福利网址| 久久精品国产亚洲5555| 人妻av中文系列| 91蜜桃免费观看视频| 精品人妻一区二区三区免费看 | 超碰在线97av| 在线日本高清免费不卡| v天堂中文在线| 日本道免费精品一区二区三区| 国产在线一二| 国产美女被下药99| 欧美福利专区| 性囗交免费视频观看| 色综合天天综合网国产成人综合天| 久草福利在线| 国产男女猛烈无遮挡91| 婷婷亚洲图片| 在线中文字日产幕| 欧美午夜无遮挡| 777电影在线观看| 91久久偷偷做嫩草影院| 在线精品福利| 妺妺窝人体色WWW精品| 欧美精选一区二区| 男女羞羞视频在线观看| 蜜桃视频在线观看成人| 美国十次了思思久久精品导航| 麻豆一区产品精品蜜桃的特点| 亚洲白拍色综合图区| 欧美性xxx| 中国一级大黄大黄大色毛片| 成人免费电影视频| 日韩国产亚洲欧美| 九九热精品视频| 亚洲春色h网| 亚洲天堂伊人网| 精品福利樱桃av导航| 91伦理视频在线观看| 国产精品jizz视频| 日韩精品一级中文字幕精品视频免费观看 | 国产精品不卡| 毛茸茸free性熟hd| 欧美视频三区在线播放| 欧美aaa免费| 色姑娘综合网| 成人黄色国产精品网站大全在线免费观看| 黄瓜视频在线免费观看| 久久综合网hezyo| 亚洲亚洲免费| 97中文字幕在线观看| 欧美性生交片4| 毛片在线网站| 警花观音坐莲激情销魂小说|