TypeScript的30个小问答(下)

简介: TypeScript的30个小问答(下)

16、什么是 .map 文件,为什么/如何使用它?


.map文件是源地图,显示原始打字稿代码是如何解释成可用的JavaScript代码。它们有助于简化调试,因为你可以捕获任何奇怪的编译器行为。调试工具还可以使用这些文件来允许你编辑底层的 TypeScript 而不是发出的JavaScript 文件。


17、TypeScript 中的类是什么?你如何定义它们?


类表示一组相关对象的共享行为和属性。例如,我们的类可能是Student,其所有对象都具有该attendClass方法。另一方面,John是一个单独的 type 实例,Student可能有额外的独特行为,比如attendExtracurricular.你使用关键字声明类class:


class Student {    
    studCode: number
    studName: string
    constructor(code: number, name: string) {    
            this.studName = name 
            this.studCode = code 
}
复制代码


18、TypeScript 与 JavaScript 有什么关系?


TypeScript 是 JavaScript 的开源语法超集,可编译为 JavaScript。所有原始 JavaScript 库和语法仍然有效,但 TypeScript 增加了 JavaScript 中没有的额外语法选项和编译器功能。TypeScript 还可以与大多数与 JavaScript 相同的技术接口,例如 Angular 和 jQuery。


19、TypeScript 中的 JSX 是什么?


JSX 是一种可嵌入的类似于 XML 的语法,允许你创建 HTML。TypeScript 支持嵌入、类型检查和将 JSX 直接编译为 JavaScript。


20、TypeScript 支持哪些 JSX 模式?


  • TypeScript有内置的支持preserve,react和react-native。
  • preserve 保持 JSX 完整以用于后续转换。
  • react不经过 JSX 转换,而是react.createElement作为.js文件扩展名发出和输出。
  • react-native结合起来preserve,react因为它维护所有 JSX 和输出作为.js扩展。


21、如何编译 TypeScript 文件?


你需要调用 TypeScript 编译器tsc来编译文件。你需要安装 TypeScript 编译器,你可以使用npm.


npm install -g typescript
tsc <TypeScript File Name>
复制代码


22、 TypeScript 中有哪些范围可用?这与JS相比如何?


  • 全局作用域:在任何类之外定义,可以在程序中的任何地方使用。
  • 函数/类范围:在函数或类中定义的变量可以在该范围内的任何地方使用。
  • 局部作用域/代码块:在局部作用域中定义的变量可以在该块中的任何地方使用。


23、TypeScript 中的箭头/lambda 函数是什么?


胖箭头函数是用于定义匿名函数的函数表达式的速记语法。它类似于其他语言中的 lambda 函数。箭头函数可让你跳过function关键字并编写更简洁的代码。


24、解释rest参数和声明rest参数的规则。


其余参数允许你将不同数量的参数(零个或多个)传递给函数。当你不确定函数将接收多少参数时,这很有用。其余符号之后的所有参数...都将存储在一个数组中。例如:


function Greet(greeting: string, ...names: string[]) {
    return greeting + " " + names.join(", ") + "!"
}
Greet("Hello", "Steve", "Bill"); // returns "Hello Steve, Bill!"
Greet("Hello");// returns "Hello !"
复制代码


rest 参数必须是参数定义的最后一个,并且每个函数只能有一个rest参数。


25、什么是三斜线指令?有哪些三斜杠指令?


三斜线指令是单行注释,包含用作编译器指令的 XML 标记。每个指令都表示在编译过程中要加载的内容。三斜杠指令仅在其文件的顶部工作,并且将被视为文件中其他任何地方的普通注释。


/// <reference path="..." /> 是最常见的指令,定义文件之间的依赖关系。
/// <reference types="..." />类似于path但定义了包的依赖项。
/// <reference lib="..." />允许您显式包含内置lib文件。
复制代码


26、Omit类型有什么作用?


Omit是实用程序类型的一种形式,它促进了常见的类型转换。Omit允许你通过传递电流Type并选择Keys在新类型中省略来构造类型。

Omit<Type, Keys>例如:


interface Todo {
  title: string;
  description: string
  completed: boolean
  createdAt: number
}
type TodoPreview = Omit<Todo, "description">
复制代码


27、TypeScript中如何实现函数重载?


要在 TypeScript 中重载函数,只需创建两个名称相同但参数/返回类型不同的函数。两个函数必须接受相同数量的参数。这是 TypeScript 中多态性的重要组成部分。例如,你可以创建一个add函数,如果它们是数字,则将两个参数相加,如果它们是字符串,则将它们连接起来。


function add(a:string, b:string):string
function add(a:number, b:number): number
function add(a: any, b:any): any {
    return a + b;
}
add("Hello ", "Steve"); // returns "Hello Steve" 
add(10, 20); // returns 30
复制代码


28、如何让接口的所有属性都可选?


你可以使用partial映射类型轻松地将所有属性设为可选。


29、什么时候应该使用关键字unknown?


unknown,如果你不知道预先期望哪种类型,但想稍后分配它,则应该使用该any关键字,并且该关键字将不起作用。


30、什么是装饰器,它们可以应用于什么?


装饰器是一种特殊的声明,它允许你通过使用@注释标记来一次性修改类或类成员。每个装饰器都必须引用一个将在运行时评估的函数。例如,装饰器@sealed将对应于sealed函数。任何标有 的@sealed都将用于评估sealed函数。


function sealed(target) {
  // do something with 'target' ...
}
复制代码


它们可以附加到:

  • 类声明
  • 方法
  • 配件
  • 特性
  • 参数

注意:默认情况下不启用装饰器。要启用它们,你必须experimentalDecorators从tsconfig.json文件或命令行编辑编译器选项中的字段。

相关文章
|
机器学习/深度学习 人工智能 数据挖掘
Python在数据分析中的应用及未来发展趋势
【2月更文挑战第7天】传统的数据分析方法已经无法满足当今大数据时代的需求,Python作为一种高效、灵活的编程语言,在数据分析领域扮演着越来越重要的角色。本文将探讨Python在数据分析中的应用现状,并对其未来发展趋势进行展望。
239 0
|
5月前
|
人工智能 测试技术 定位技术
WorldScore:斯坦福开源世界生成模型评估新标杆:3000样本+九维指标,视频/4D/3D模型一网打尽
WorldScore是斯坦福大学提出的首个统一评估世界生成模型的基准测试,通过基于相机轨迹的布局规范和3000个多样化样本,全面评测生成内容的可控性、质量与动态性。
352 46
WorldScore:斯坦福开源世界生成模型评估新标杆:3000样本+九维指标,视频/4D/3D模型一网打尽
移动端click事件、touch事件、tap事件的区别
移动端click事件、touch事件、tap事件的区别
396 0
|
开发工具 数据安全/隐私保护 git
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
406 0
|
传感器 物联网 大数据
物联网(IoT)技术与应用:塑造未来的智能化生活
【5月更文挑战第1天】物联网(IoT)技术整合传感器、嵌入式系统、云计算与大数据,连接智能设备,重塑生活与工作方式。应用涵盖智能家居、工业自动化、农业、智能城市及医疗健康,提升效率与便利性。然而,数据安全、设备兼容性及网络基础设施仍是挑战。随着5G和AI进步,IoT将在更多领域发挥潜力,驱动社会智能化转型,需关注技术挑战并加强创新。
1403 4
|
编译器 C++ 计算机视觉
include包含文件查找的顺序 .
从microsoft网站上找到关于#include Directive (C/C++)的相关问题解释如下: The #include directive tells the preprocessor to treat the contents of a specified file as if t...
1476 0
|
数据建模 定位技术
7 种 基本比例尺地形图的分幅和编号的数量关系
7 种 基本比例尺地形图的分幅和编号的数量关系
1743 0
7 种 基本比例尺地形图的分幅和编号的数量关系
阿里云商标注册申请流程新版教程(智能注册申请新手操作笔记)
阿里云商标类型、阿里云商标名称、阿里云商标图样、阿里云商标说明、阿里云商标类别选择、阿里云上传商标申请人材料,阿里云商标注册图文教程快速上手笔记,本文以阿里云商标智能注册申请为例,商标智能注册申请需要用户手动填写商标类型、商标名称、商标图样、商标说明及商标分类表选择等操作,流程较为复杂,阿里云百科来详细说下阿里云商标注册快速上手笔记
729 0
阿里云商标注册申请流程新版教程(智能注册申请新手操作笔记)
|
自然语言处理 JavaScript
|
开发工具 数据安全/隐私保护 git
git的分支远程连接和远程分支的拉取推送及冲突处理
本文参考于廖雪峰老师的博客Git 教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。 git push origin branch-name将本地分支推送到远程。 默认 clone
1030 0
git的分支远程连接和远程分支的拉取推送及冲突处理