全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

高阶文件声明专题测试

8 题 90 分钟 难度:

考察知识点

  1. 复杂声明语法: 函数重载声明、泛型声明、交叉类型声明
  2. 模块增强: 模块扩展、原型扩展、全局变量声明
  3. 第三方库声明: 类型补全、补丁文件、版本管理
  4. 声明文件优化: 类型推导辅助、条件声明、工具类型
  5. 声明发布: 打包配置、版本兼容、类型测试
1
多选题

关于 TypeScript 编译器(tsc)的编译流程,以下说法正确的有哪些?

A

TypeScript 编译器首先进行词法分析(Lexical Analysis),将源代码转换为 Token 流

B

语法分析(Parsing)阶段会生成抽象语法树(AST),TypeScript 使用的是自己定制的 AST 格式,与 ESTree 不完全兼容

C

类型检查(Type Checking)是在 AST 生成之后、代码发射(Emit)之前独立执行的阶段

D

代码发射(Emit/Transpilation)阶段会将 TypeScript 特有的语法(如 interface、enum)转换为等价的 JavaScript 代码

2
多选题

在 TypeScript 编译过程中,以下 tsconfig.json 配置项中,哪些会影响代码发射(Emit)阶段生成的 JavaScript 输出结果(而非仅影响类型检查)?

A

"target": "ES2020" — 指定生成的 JavaScript 语言版本

B

"strict": true — 启用所有严格类型检查选项

C

"module": "ESNext" — 指定模块代码生成方式

D

"emitDecoratorMetadata": true — 在发射时生成装饰器类型元数据

3
填空题

在 TypeScript 的结构化类型系统中,判断以下函数类型的赋值兼容性:

TypeScript
type Handler = (x: string | number) => void;
type SpecificHandler = (x: string) => void;

const h1: Handler = function(x: string) { console.log(x); };
const h2: SpecificHandler = function(x: string | number) { console.log(x); };

上述代码中,赋值语句 const h1: Handler = ... 是否会报类型错误?赋值语句 const h2: SpecificHandler = ... 是否会报类型错误?

请分别回答:h1 赋值 ________,h2 赋值 ______。(填写"会报错"或"不会报错")

4
简答题

TypeScript 采用的是结构化类型系统(Structural Typing / Duck Typing),而 Java、C# 等语言采用的是名义类型系统(Nominal Typing)。

请回答以下问题:

  1. 以下代码在 TypeScript 中为何能编译通过?在 Java 中会怎样?
TypeScript
class Dog { bark() { console.log("woof"); } }
class Wolf { bark() { console.log("howl"); } }
const d: Dog = new Wolf(); // TS 中合法
  1. TypeScript 的结构化类型在什么场景下会带来安全隐患?请举例说明。

  2. TypeScript 是否提供了模拟名义类型检查的方式?如果有,请给出实现方案。

5
多选题

TypeScript 编译器在词法分析阶段会生成哪些产物?

A

Token 流(词法单元序列)

B

抽象语法树(AST)

C

符号表(Symbol Table)的初步信息

D

类型检查报告

6
多选题

TypeScript 编译器的语法分析(Parser)阶段的主要职责包括哪些?

A

将 Token 流转换为抽象语法树(AST)

B

检测语法错误并报告

C

进行类型推断

D

处理.decorators装饰器语法

7
填空题

在 TypeScript 的结构化类型系统中,函数 A = (x: Animal) => void 能否赋值给函数 B = (x: Dog) => void

答案:________________________

8
简答题

TypeScript 是结构化类型系统(Structural Typing),两个结构相同的类型被视为兼容。请说明如何在这种系统中模拟"名义类型"(Nominal Type)的效果,使两个结构相同但语义不同的类型互不兼容。

← 上一个试卷 高阶工具类型专题测试
下一个试卷 → 高阶类型体系专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库