interview
frontend-classic
TypeScript 的内置数据类型有哪些

前端经典面试题合集, TypeScript 的内置数据类型有哪些?

前端经典面试题合集, TypeScript 的内置数据类型有哪些?

QA

Step 1

Q:: TypeScript 的内置数据类型有哪些?

A:: TypeScript 提供了多种内置数据类型,包括: 1. 基础类型- boolean:表示真值或假值,取值 truefalse- number:表示数值类型,包括整数和浮点数。 - string:表示字符串类型。 - void:表示没有任何类型,一般用于函数没有返回值的情况。 - nullundefined:分别表示空值和未定义。 - symbol:表示唯一的不可变的值。 2. 数组类型:用 T[]Array<T> 表示。 3. 元组类型:表示一个已知元素数量和类型的数组。 4. 枚举类型:用 enum 关键字定义。 5. any 类型:表示任意类型,一般用于兼容 JavaScript 代码。 6. unknown 类型:表示未知类型,与 any 类似但更安全。 7. never 类型:表示永远不会有值的类型,例如函数抛出异常或无限循环。 8. object 类型:表示非原始类型的对象。 9. 联合类型交叉类型:用来组合多个类型。

Step 2

Q:: 什么是 TypeScript 中的类型推断?

A:: 类型推断是 TypeScript 的一种自动推导变量类型的机制。当我们声明一个变量并赋值时,TypeScript 会根据赋的值自动推断出变量的类型。例如,let num = 42; 中,TypeScript 会推断 num 的类型为 number。类型推断减少了显式声明类型的需要,提升了代码的简洁性和可读性。

Step 3

Q:: TypeScript 中的接口(interface)有什么用?

A:: 接口用于定义对象的类型结构。它规定了对象的属性和方法的类型,可以在编译时对代码进行类型检查。例如:

 
interface Person {
  name: string;
  age: number;
}
const john: Person = { name: 'John', age: 30 };
 

接口可以用于类型检查,确保对象符合特定的结构。此外,接口还支持继承、可选属性、只读属性等特性,增强了代码的灵活性和可维护性。

Step 4

Q:: TypeScript 中的泛型(Generics)是什么?

A:: 泛型是一种使得函数、类和接口可以处理不特定类型的方式。在定义时使用泛型,能够在使用时指定具体的类型,从而提高代码的复用性和类型安全。例如:

 
function identity<T>(arg: T): T {
  return arg;
}
let output = identity<string>('hello');
 

这里,函数 identity 使用了泛型 T,可以处理任何类型的参数,调用时指定具体类型 string

用途

面试这些内容是因为 TypeScript 是现代前端开发中的重要工具。掌握 TypeScript 能提高代码的可维护性、类型安全性和开发效率。在实际生产环境中,TypeScript 帮助开发者捕捉潜在的错误,增强代码的健壮性,特别是在大型项目中更为重要。具体应用场景包括定义数据模型、接口通信、泛型处理复杂数据结构等。\n

相关问题

🦆
TypeScript 如何与 JavaScript 兼容?

TypeScript 是 JavaScript 的超集,所有有效的 JavaScript 代码在 TypeScript 中都有效。通过 TypeScript 的编译器(tsc),可以将 TypeScript 代码编译成纯 JavaScript,从而在任何支持 JavaScript 的环境中运行。TypeScript 还提供了 declare 关键字来描述现有的 JavaScript 库,使得它们可以在 TypeScript 中被类型检查。

🦆
TypeScript 中的类型别名Type Aliases是什么?

类型别名是用 type 关键字为类型创建一个新的名称。它可以为基本类型、联合类型、交叉类型等复杂类型提供简洁的别名。例如:

 
type StringOrNumber = string | number;
let value: StringOrNumber = 'hello';
 

类型别名提高了代码的可读性和复用性。

🦆
TypeScript 中的装饰器Decorators是什么?

装饰器是一种特殊类型的声明,能够附加到类声明、方法、访问符、属性或参数上,用来修改其行为。装饰器在一些框架(如 Angular)中被广泛使用。需要开启 experimentalDecorators 编译选项才能使用。例如:

 
function Log(target: any, key: string) {
  console.log(`${key} was called`);
}
class Person {
  @Log
  greet() {
    console.log('Hello!');
  }
}
 

这里,Log 装饰器会在 greet 方法被调用时打印日志。