Skip to content
说说你对 typescript 的理解?与 javascript 的区别?

TypeScript 是 JavaScript 的类型的超集,支持ES6语法,支持面向对象编程的概念,如接口继承泛型等。是一种静态类型检查的语言,提供了类型注解,在代码编译阶段就可以检查出数据类型的错误。

tsconfig.json文件有什么用?

tsconfig.json 是 TypeScript 编译器的配置文件,其主要作用在于指定编译 TypeScript 代码时的编译选项和编译目标等信息。通过修改这个文件,可以定制 TypeScript 编译器的行为,以满足项目的具体需求。

tsconfig.json 文件主要包含两部分内容:指定待编译文件定义编译选项。例如,可以指定编译目标、启用或禁用特定的语言特性、设置代码检查规则等。当一个目录中存在 tsconfig.json 文件时,通常认为该目录为 TypeScript 项目的根目录。

具体来说,tsconfig.json 文件中的常用选项包括:

  • compilerOptions:编译器选项,用于配置 TypeScript 编译器的行为。这些选项可以包括指定目标 JavaScript 版本、模块化方式、输出目录、是否生成 source map 等。
  • excludeFiles:指定应该被忽略的文件,即这些文件不会被 TypeScript 编译器处理。
  • includeDirectories:包含需要编译的文件的目录列表,这有助于确保只有项目所需的文件被编译。

综上所述,tsconfig.json 文件在 TypeScript 项目中起到了至关重要的作用,它帮助开发者定制和控制 TypeScript 代码的编译过程,以满足项目的特定需求。

TypeScript中的类型有哪些 ?

TypeScript中的类型相当丰富,以下是其中一些主要的类型:

  1. 基本数据类型:

    • 布尔类型(boolean):表示逻辑值,可以是truefalse
    • 数值类型(number):用于表示数字,包括整数和浮点数。
    • 字符串类型(string):用于表示文本数据。
  2. 复杂数据类型:

    • 数组类型(Array):表示一组按索引排序的元素集合。
    • 元组类型(Tuple):允许表示一个已知元素数量和类型的数组。
    • 枚举类型(Enum):一种数值集合,用于为数值赋予更友好的名称。
    • 对象类型(Object):用于表示复杂的数据结构,由属性和方法组成。
  3. 特殊类型:

    • 未知类型(Unknown):表示一个未知类型的值。
    • 任何类型(Any):可以赋值为任意类型。
    • 空类型(Void):表示没有任何类型,通常用于表示函数没有返回值。
    • null 和 undefined:在TypeScript中,它们也各自作为类型存在。
    • Never类型:表示的是那些永不存在的值的类型。

此外,TypeScript还提供了几种高级类型操作,如:

  • 类型别名:使用type关键字为复杂的类型创建别名。
  • 映射类型:如Partial<T>Required<Type>Readonly<T>,用于操作现有类型以生成新类型。
  • 交叉类型:使用&符号组合多个类型,生成的类型将具有所有类型的属性。
  • 联合类型:使用|符号表示一个值可以是多个类型之一。

TypeScript的类型系统不仅提供了静态类型检查,增强了代码的可读性可维护性,而且还通过智能提示代码补全等功能提高了开发效率。

请注意,随着TypeScript的不断发展,可能会有新的类型或特性被引入,因此建议查阅最新的TypeScript文档以获取最全面的信息。

什么是TypeScript Declare 关键字 ?

在TypeScript中,declare关键字用于声明一个变量、函数、类或其他实体,但不提供具体的实现细节。其主要作用是告诉TypeScript编译器这些实体是在其他地方定义的,而不是在当前的文件中。通过使用declare,开发者可以在TypeScript代码中使用JavaScript库和模块,而无需为它们编写额外的类型定义文件。

以下是declare关键字在TypeScript中的一些常见用途:

  • 声明变量:当在TypeScript文件中使用在其他地方(如全局作用域或外部模块)定义的全局变量时,可以使用declare来声明这些变量的类型。这有助于提供类型信息,以便TypeScript编译器可以进行类型检查和智能提示。
typescript
declare var myGlobalVar: string;
  • 声明类型:declare也可以用于声明全局的类型别名、接口或类型字面量。这通常在.d.ts文件中进行,这些文件用于定义和存储类型信息。
typescript
// 在 .d.ts 文件中
declare type MyGlobalType = {
  name: string;
  age: number;
};
  • 声明模块:当使用非TypeScript编写的模块时,可以使用declare module来告诉TypeScript这个模块的存在,并描述其导出的类型。这允许TypeScript代码与这些模块进行交互,并享受类型检查和智能提示的好处。
typescript
declare module "some-javascript-module" {
  export function doSomething(): void;
}

需要注意的是,declare关键字只是告诉编译器某个类型或实体是存在的,而不提供实际的实现代码。因此,它不会出现在编译后的JavaScript文件中。

通过使用declare,开发者可以在TypeScript项目中更容易地集成现有的JavaScript代码库和模块,同时保持类型安全和代码质量。

Typescript中never 和 void 的区别?
  • void 表示没有任何类型(可以被赋值为 null 和 undefined)。
  • never 表示一个不包含值的类型,即表示永远不存在的值
  • 拥有 void 返回值类型的函数能正常运行。拥有 never 返回值类型的函数无法正常返回,无法终止,或会抛出异常。

Powered by VitePress.