背上小书包准备面试之TypeScript篇

目录

typescript是啥?与javascript的区别?

typescript数据类型?

typescript中枚举类型?应用场景?

typescript中接口的理解?应用场景?

typescript中泛型的理解?应用场景?

如何在react项目中应用typescript?


这TypeScript我真不知道面试会咋问。。。

哦以前还写过一篇基础⬇️

Typescript 基础易理解-------冲冲冲_ts和js有什么区别_慢谷的博客-CSDN博客

typescript是啥?与javascript的区别?

TypeScript是一个强类型的JavaScript超集,可编译为纯JavaScript。它是一种用于应用级JavaScript开发的语言。(c#、Java就是强类型语言)

区别:

1.TypeScript支持强类型js不支持

2.TypeScript 支持类和接口的概念,使面向对象编程更简单明确。类用于定义对象的结构和行为,接口则用于定义对象的合同(即对象应该具有的属性和方法)

3.高级特性:TypeScript 提供了一些 JavaScript 中缺少的高级特性,如元组(Tuple)、枚举(Enum)、泛型(Generics)等。这些特性有助于更好地描述数据结构和处理逻辑。

4.编译时类型检查:TypeScript 在编译阶段进行类型检查,捕获并报告类型错误。这减少了运行时错误,增加了代码质量和可维护性。

5.生态系统和工具支持:TypeScript 兼容 JavaScript 的生态系统,可以使用现有的 JavaScript 库和框架。此外,TypeScript 提供了强大的开发工具支持,如代码编辑器的智能感知、重构功能和错误检查。

尽管 TypeScript 是 JavaScript 的超集,但它仍然可以编译为普通的 JavaScript 代码,并且可以在任何支持 JavaScript 的运行环境中运行。TypeScript 主要用于开发大型项目,特别是需要更强类型约束和更好工具支持的场景。

我就背:ts是js的超集,在js的基础上提供了更多的类型和功能;ts 是一种带有静态类型检查的编程语言,它可以在开发过程中检测出类型错误。而 js是一种动态类型语言,它在运行时才进行类型检查;ts是编译性语言,需要编译成js才能在浏览器或其他 JavaScript 运行时环境中执行。而js是解释性语言不需要编译可直接在浏览器或者其他JavaScript 运行时环境中执行。

typescript数据类型?

基本类型

number: 表示数值,包括整数和浮点数。

string: 表示字符串。

boolean: 表示布尔值,即 true 或 false。

null 和 undefined: 分别表示 null 和 undefined。

symbol: 表示唯一的、不可变的值。

数组类型:

type[] 或 Array<type>: 表示由指定类型元素组成的数组。

元组类型:

[type1, type2, ...]: 表示固定长度和特定顺序的数组,每个位置上的元素可以具有不同的类型。

对象类型:

object: 表示非原始类型的值,例如对象、函数和数组等。

{} 或 Record<string, type>: 表示具有指定属性和对应类型的对象。

函数类型:

(arg1: type1, arg2: type2, ...) => returnType: 表示函数类型,包括参数的类型和返回值的类型。

类型推断:

如果没有显式指定变量的类型,TypeScript 可以根据赋予给变量的值来推断其类型。

高级类型:

union: 表示多个类型中的一个值。例如,type1 | type2 表示可以是 type1 或 type2。

intersection: 表示多个类型的交集。例如,type1 & type2 表示必须同时满足 type1 和 type2。

type: 用于创建自定义类型别名。

enum: 表示一组命名的常量值。

typescript中枚举类型?应用场景?

枚举类型(Enum)用于定义一组命名的常量值。枚举类型可以为每个常量分配一个名称,并使代码更具可读性和可维护性。

enum Color {

  Red,

  Green,

  Blue,

}

let myColor: Color = Color.Green;

console.log(myColor); // 输出 1

在上面的示例中,我们定义了一个名为 Color 的枚举类型,它包含三个常量值:Red、Green 和 Blue。这些常量默认从 0 开始自动编号。

应用场景:

表示一组相关的常量值:例如表示不同颜色、星期几、状态等。

限制变量取值范围:通过指定枚举类型,可以确保变量只能取枚举中定义的值,防止无效值的引入。

增加代码可读性:使用枚举类型可以使代码更清晰地表达意思,提供更好的代码可读性和可维护性。

替代魔法数值:将代码中的魔法数值(magic numbers)替换为有意义的枚举常量,增加代码的可维护性。

枚举类型在处理一组固定的常量值时非常有用,它们提供了一种更好的方式来组织和使用常量。通过使用枚举类型,可以减少错误、提高代码可读性,并使代码更具表现力。

typescript中接口的理解?应用场景?

在 TypeScript 中,接口(Interface)用于描述对象的结构和行为,定义了对象应该具有哪些属性和方法。通过接口,可以明确指定对象的形状,并在开发过程中进行类型检查,确保对象符合接口的要求。以下是接口的示例:

interface Person {

  name: string;

  age: number;

  sayHello(): void;

}

let person: Person = {

  name: "Alice",

  age: 30,

  sayHello() {

    console.log("Hello, I'm " + this.name);

  },

};

person.sayHello(); // 输出 "Hello, I'm Alice"

在上面的示例中,我们定义了一个名为 Person 的接口,它要求对象具有 name 和 age 属性,并且必须有一个名为 sayHello 的方法,没有返回值。

应用场景:

定义对象的形状:接口可用于定义对象的属性和方法,确保对象的结构符合预期。

类型检查和提示:通过使用接口,在编码阶段就能捕获潜在的类型错误,并提供代码编辑器的智能感知和自动补全功能。

对象解构和函数参数:可以使用接口来约束对象解构和函数参数,以增加代码的可读性和可靠性。

定义类的实现规范:接口也可以作为类的合同,规定类必须实现指定的属性和方法,促使类的一致性和可扩展性。

接口在 TypeScript 中是一个重要的概念,它提供了一种强大的方式来描述对象的结构和行为,并且能够帮助开发者更好地理解和使用代码。通过使用接口,可以编写更健壮、可读性更高的代码,并在团队合作中提供清晰的约定和规范。

typescript中的interface和type有什么区别?

1.type不能继承,interface能继承;

interface 可以通过关键字 extends 进行继承其他 interface,从而扩展和组合类型。

interface Animal {
  name: string;
}

interface Dog extends Animal {
  bark(): void;
}

上述代码中,Dog 接口继承了 Animal 接口,从而拥有了 name 属性,并在其基础上增加了一个 bark 方法。

与此不同,type 不支持直接的继承,无法扩展其他类型。但是可以使用联合类型(|)和交叉类型(&)进行类型组合:

type Animal = {
  name: string;
};

type Dog = Animal & {
  bark(): void;
};

 

2.type可创建类型别名;

type 可以用来创建类型别名(Type Alias),给一个类型取一个新的名称。这样可以提高代码的可读性和可维护性。例如:

type Person = {
  name: string;
  age: number;
};

Person 是一个类型别名,表示一个具有 nameage 属性的对象类型。

3.type可以声明任何类型,interface只能声明对象;

type 可以声明任何类型,包括原始类型、联合类型、交叉类型、函数类型等。例如:

type MyNumber = number | string;

type MyObject = {
  id: number;
  name: string;
};

type MyFunction = (x: number, y: number) => number;
相比之下,interface 主要用于声明对象类型。它只能描述对象的形状、属性和方法,不能直接声明其他类型。

4.同名type只能有一个,同名interface可以多个

如果存在多个同名的 interface,它们会自动合并成一个大的接口,从而扩展了原有的接口。例如:

interface Animal {
  name: string;
}

interface Animal {
  age: number;
}

const dog: Animal = {
  name: 'Dog',
  age: 5,
};

在这个例子中,两个 Animal 接口合并为一个,拥有 nameage 两个属性的接口。

相反,如果使用同名的 type 别名,后面的别名会覆盖前面的定义,无法进行合并。

总体来说,typeinterface 在某些方面有不同的特性和用途。根据具体的需求和场景,选择合适的方式来声明和组织类型定义。

typescript中泛型的理解?应用场景?

在 TypeScript 中,泛型(Generics)是一种在编程语言中用于创建可重用代码的工具。通过泛型,可以在定义函数、类或接口时使用类型参数,使其可以适用于多种不同类型的数据。

以下是一个简单的泛型函数示例:

function identity<T>(arg: T): T {

  return arg;

}

let result = identity<string>("Hello");

console.log(result); // 输出 "Hello"

在上面的示例中,我们定义了一个名为 identity 的泛型函数。使用 <T> 表示类型参数,并将其应用于函数参数和返回值的类型。这样,我们可以通过传入不同类型的参数来调用该函数,并且函数会返回相同类型的结果。

应用场景:

提高代码的复用性:通过使用泛型,可以编写更通用的函数、类或接口,以处理多种类型的数据,提高代码的复用性。

类型安全性:泛型能够提供类型检查和约束,避免意外的类型错误,并在编码阶段捕获潜在问题。

抽象数据结构:泛型在实现抽象数据结构(如栈、队列等)时非常有用,可以处理各种元素类型而无需重复编写代码。

函数式编程风格:泛型常用于函数式编程风格中,例如在数组的 map、filter 等函数中,可以使用泛型来处理不同类型的数据。

通过合理应用泛型,可以提高代码的灵活性、可读性和可维护性。它是 TypeScript 中强大且重要的特性之一,使得我们能够编写更加通用和类型安全的代码。

面试的时候我就背这句:泛型是指在定义函数、接口,类的时候没有提前指定具体的类型,而是在使用的时候再指定类型的一种特性。

如何在react项目中应用typescript?

要在 React 项目中应用 TypeScript,可以按照以下步骤进行设置:

1.创建 TypeScript React 项目:使用脚手架工具(如 Create React App)创建一个新的 TypeScript 项目。

npx create-react-app my-app --template typescript

2.将现有 React 项目转换为 TypeScript:如果已经有一个现有的 React 项目,并希望将其转换为 TypeScript,可以执行以下操作:

在项目根目录运行以下命令安装 TypeScript 和相关的类型定义文件:

npm install typescript @types/react @types/react-dom

3.配置 TypeScript 编译选项:可以创建 tsconfig.json 文件来配置 TypeScript 编译选项。可以使用默认配置,也可以根据项目需求进行自定义配置。

4.安装和使用 TypeScript 类型定义库:如果使用了第三方库或组件,可以通过安装相应的类型定义文件(通常以 @types/ 开头)来提供类型支持。

开始编写 TypeScript 代码:在 React 组件中使用 TypeScript 的优势之一是能够为组件的 props、state 和事件处理函数等添加明确的类型注解,以提供更好的类型检查和智能感知。

5.运行项目:使用适合的命令(如 npm start)来启动 TypeScript React 项目,并在开发过程中享受 TypeScript 的类型检查和错误提示。

通过将 TypeScript 引入到 React 项目中,能够增加代码的可靠性、可读性和可维护性。TypeScript 为 React 开发提供了更强大的类型系统和工具支持,以帮助开发者编写更健壮和可扩展的应用程序。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值