JavaScript和TypeScript的异同

JavaScript的灵活性

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

JavaScript是动态类型

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

TypeScript是静态类型

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

TypeScript和JavaScript都是弱类型

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

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

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

相关推荐
梦想CAD控件2 分钟前
在线CAD开发包结构与功能说明
前端·javascript·vue.js
时光不负努力7 分钟前
typescript常用的dom 元素类型
前端·typescript
时光不负努力13 分钟前
TS 常用工具类型
前端·javascript·typescript
Hilaku22 分钟前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试
进击的尘埃35 分钟前
Vue3 中 emit 能 await 吗?事件机制里的异步陷阱
javascript
青青家的小灰灰44 分钟前
React 反模式(Anti-Patterns)排查手册:从性能杀手到逻辑陷阱
前端·javascript·react.js
青青家的小灰灰44 分钟前
告别 Prop Drilling:Context API 的陷阱、Reducer 模式与原子化状态库原理
前端·javascript·react.js
进击的尘埃1 小时前
CSS 变量 + 主题切换:从 CSS-in-JS 回归原生方案的实践之路
javascript
csdn飘逸飘逸1 小时前
Autojs基础-按键模拟(keys)
javascript
wuhen_n1 小时前
Suspense:异步组件加载机制
前端·javascript·vue.js