interview
typescript-frontend
什么是 TypeScript 的对象类型怎么定义对象类型

前端 TypeScript 面试题, ️ 什么是 TypeScript 的对象类型?怎么定义对象类型?

前端 TypeScript 面试题, ️ 什么是 TypeScript 的对象类型?怎么定义对象类型?

QA

Step 1

Q:: 什么是 TypeScript 的对象类型?

A:: TypeScript 的对象类型是指用来描述对象形状的一种类型。例如,它可以指定对象有哪些属性,每个属性的类型是什么。对象类型可以通过接口(interface)或类型别名(type alias)来定义。例如:

 
interface User {
  name: string;
  age: number;
}
 

这个定义了一个 User 对象类型,其中 name 是一个字符串类型,age 是一个数字类型。

Step 2

Q:: 怎么定义对象类型?

A:: 对象类型可以使用 interfacetype 关键字来定义。使用 interface 时,可以通过以下方式定义对象类型:

 
interface Person {
  firstName: string;
  lastName: string;
}
 

也可以使用 type 定义对象类型:

 
type Person = {
  firstName: string;
  lastName: string;
};
 

这两种方式的主要区别在于 interface 可以被扩展,而 type 更加灵活,可以组合其他类型。

Step 3

Q:: TypeScript 中如何使用可选属性?

A:: 在 TypeScript 中,可选属性可以通过在属性名后加上问号 ? 来表示。可选属性意味着该属性可以存在也可以不存在。示例:

 
interface Car {
  brand: string;
  model?: string;
}
 

在这个例子中,model 属性是可选的,因此一个 Car 对象可以有 model 属性,也可以没有。

Step 4

Q:: 什么是 TypeScript 的接口扩展?

A:: 接口扩展是指一个接口可以继承另一个接口的所有属性,并可以添加新的属性。接口扩展使用 extends 关键字。例如:

 
interface Animal {
  name: string;
}
interface Dog extends Animal {
  breed: string;
}
 

在这个例子中,Dog 接口继承了 Animal 接口,因此 Dog 具有 name 属性和 breed 属性。

Step 5

Q:: TypeScript 中如何定义只读属性?

A:: 在 TypeScript 中,可以使用 readonly 关键字来定义只读属性。一旦赋值,只读属性的值就不能再被修改。例如:

 
interface Book {
  readonly title: string;
}
 

在这个例子中,title 是一个只读属性,这意味着你不能修改 title 的值。

用途

面试这些内容是为了评估候选人对 TypeScript 的理解,特别是在类型系统方面的掌握。类型系统是 TypeScript 的核心,它可以帮助开发者在编写代码时捕获错误,提高代码的可靠性和可维护性。在实际生产环境中,这些概念常用于定义复杂的数据结构,确保数据的一致性,并帮助团队成员之间保持一致的代码风格。\n

相关问题

🦆
什么是 TypeScript 的类型别名?

类型别名是使用 type 关键字为一个类型定义一个新的名字。它可以用于基本类型、对象类型、联合类型等。类型别名主要用于简化类型的定义,使代码更加清晰易读。例如:

 
type ID = string | number;
 

在这个例子中,ID 是一个类型别名,可以是字符串或数字类型。

🦆
TypeScript 中的类型守卫是什么?

类型守卫是用来在运行时缩小变量的类型范围的方法。它可以使用 typeofinstanceof、自定义类型谓词等方式来实现。类型守卫的目的是让 TypeScript 更精确地推断变量的类型,从而减少类型错误。例如:

 
function isString(value: any): value is string {
  return typeof value === 'string';
}
 

这个函数 isString 就是一个类型守卫,用于判断传入的值是否为字符串。

🦆
如何使用 TypeScript 中的联合类型和交叉类型?

联合类型表示一个变量可以是多个类型之一,使用 | 连接。例如:

 
let id: string | number;
 

这个 id 变量可以是字符串或数字。 交叉类型表示一个变量可以是多个类型的组合,使用 & 连接。例如:

 
interface A {
  propA: string;
}
interface B {
  propB: number;
}
let obj: A & B = { propA: 'hello', propB: 42 };
 

这个 obj 变量需要同时符合 AB 的类型要求。

🦆
TypeScript 中泛型的用途是什么?

泛型允许你在编写代码时使用类型参数,这样代码可以适用于多种类型,而不会失去类型安全性。它通常用于函数、类、接口和类型别名。例如:

 
function identity<T>(arg: T): T {
  return arg;
}
 

在这个例子中,identity 函数可以接受任何类型的参数,并返回相同类型的值。泛型使代码更加灵活和可重用。