主题
说说你对 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中的类型相当丰富,以下是其中一些主要的类型:
基本数据类型:
- 布尔类型(boolean):表示逻辑值,可以是
true
或false
。 - 数值类型(number):用于表示数字,包括整数和浮点数。
- 字符串类型(string):用于表示文本数据。
- 布尔类型(boolean):表示逻辑值,可以是
复杂数据类型:
- 数组类型(Array):表示一组按索引排序的元素集合。
- 元组类型(Tuple):允许表示一个已知元素数量和类型的数组。
- 枚举类型(Enum):一种数值集合,用于为数值赋予更友好的名称。
- 对象类型(Object):用于表示复杂的数据结构,由属性和方法组成。
特殊类型:
- 未知类型(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 返回值类型的函数无法正常返回,无法终止,或会抛出异常。