typescript面试题
时间: 2023-06-30 17:05:48 浏览: 74
1. TypeScript 是什么?它与 JavaScript 有什么区别?
TypeScript 是一种开源的编程语言,它是 JavaScript 的超集,添加了静态类型、类、接口等语言特性,同时保留了 JavaScript 的动态特性和灵活性。
与 JavaScript 相比,TypeScript 最大的不同之处在于其强类型特性。TypeScript 可以帮助开发者在编写代码时尽早发现错误,从而提高代码的可维护性和可读性。
2. TypeScript 中的接口是什么?如何定义接口?
TypeScript 中的接口是一种约定,用于规范对象的形状和结构。开发者可以使用接口来定义对象的属性、方法、函数等。
定义接口的语法如下:
```typescript
interface InterfaceName {
// 属性
propertyName: propertyType;
// 方法
methodName(): returnType;
}
```
3. 类是 TypeScript 中的一个重要特性,请简述 TypeScript 类的定义方式和特性。
TypeScript 中的类与其他面向对象编程语言中的类非常相似。类可以包含属性、方法和构造函数,并且可以通过继承和多态来扩展和复用代码。
定义类的语法如下:
```typescript
class ClassName {
// 属性
propertyName: propertyType;
constructor(parameters) {
// 构造函数
}
// 方法
methodName(): returnType {
// 方法体
}
}
```
4. TypeScript 中的装饰器是什么?请举例说明。
TypeScript 中的装饰器是一种用于修改类或类成员的元编程语法。装饰器可以在不修改类的定义的情况下,为类或类成员添加新的功能,例如日志、缓存、验证等。
装饰器的语法如下:
```typescript
@decorator
class ClassName {
@decorator
propertyName: propertyType;
@decorator
methodName(): returnType {
// 方法体
}
}
```
其中,@decorator 表示装饰器函数。
例如,以下是一个用于记录方法执行时间的装饰器:
```typescript
function logExecutionTime(target, name, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.time(name);
const result = originalMethod.apply(this, args);
console.timeEnd(name);
return result;
};
return descriptor;
}
class MyClass {
@logExecutionTime
myMethod() {
// 方法体
}
}
```
5. TypeScript 中的泛型是什么?请举例说明。
TypeScript 中的泛型是一种用于创建可重用代码的语法。泛型可以让开发者在编写代码时不指定具体的类型,而是使用类型变量来代替。这样,代码就可以适用于多种类型。
例如,以下是一个用于创建数组的泛型函数:
```typescript
function createArray<T>(length: number, value: T): T[] {
const result: T[] = [];
for (let i = 0; i < length; i++) {
result.push(value);
}
return result;
}
const arr = createArray<string>(3, 'hello');
console.log(arr); // ['hello', 'hello', 'hello']
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)