JavaScript和TypeScript的异同

JavaScript的灵活性

  • 它没有类型约束,一个变量可能初始化时是字符串,过一会儿又被赋值为数字。
  • 由于隐式类型转换的存在,有的变量的类型很难在运行前就确定。
  • 基于原型的面向对象编程,使得原型上的属性或方法可以在运行时被修改。
  • 函数是 JavaScript 中的一等公民2,可以赋值给变量,也可以当作参数或返回值。

JavaScript是动态类型

动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。JavaScript 是一门解释型语言,没有编译阶段,所以它是动态类型

TypeScript是静态类型

静态类型是指编译阶段就能确定每个变量的类型,这种语言的类型错误往往会导致语法错误。TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型

TypeScript和JavaScript都是弱类型

类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。

TypeScript 是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性,所以它们都是弱类型。

在完整保留 JavaScript 运行时行为的基础上,通过引入静态类型系统来提高代码的可维护性,减少可能出现的 bug。

相关推荐
梅雅达编程笔记几秒前
零基础学 Python 第7章 | 字典 dict:键值对存储
开发语言·python·beautifulsoup·numpy·pandas
灯澜忆梦5 分钟前
GO---map函数
开发语言·前端·后端·golang
全栈项目管理程序猿16 分钟前
Cesium-1.143 中文版 API
javascript·cesium
喜欢打篮球的普通人21 分钟前
LLVM后端指令选择
android·java·javascript
用户09340777351427 分钟前
HarmonyOS WPS Open SDK 实践:办公审批附件「打开—编辑—回传」代码实现
typescript·harmonyos
Cobyte1 小时前
24.Vue Vapor 组件事件 emit 的实现
前端·javascript·vue.js
北冥you鱼1 小时前
Go语言与默克尔树:区块链数据完整性的基石
开发语言·golang·区块链
Flynt1 小时前
TypeScript 5.8 让我少踩了一个大坑,顺手再聊聊 --erasableSyntaxOnly
前端·javascript·typescript
默_笙1 小时前
👍 手写一个 MCP 文件读取服务:原来 AI 能"读"我的文件,全靠这个协议
前端·javascript
库克克1 小时前
【C++】类和对象--this指针详解
java·开发语言·c++