背景:在入门RN开发的过程中,发现公司项目代码中,有的项目是全是.js的后缀文件。有的项目全是ts、tsx、js 文件。心中很是疑惑,所以就写个文章记录下自己的解惑的过程。

js:是弱类型语言,容易出现一些编译时不报错,运行时crash的问题。
ts: 是编译时语言,一些问题可以更早的别发现。

JSX

就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。JSX 只是为 React.createElement(component, props, …children) 方法提供的语法糖。React 自创了JSX语法,是一个 JavaScript 的语法扩展,官方建议在 React 中配合使用 JSX 来替代原始的 JS。因为JSX 可以更好的描述 UI 应该呈现出它应有交互的本质形式。JSX 看起来有点类似模版语言,但它具有 JavaScript 的全部功能。

.js和.jsx的区别

我现在理解的区别就是

.js可以用来做为模块来使用

.jsx一般作为组件来使用,但是js也可以用来作为组件使用也是没问题的

.js就是前端开发语言,jsx是React框架下用的,要在React框架中的编译器编译成js语言才能使用的

TypeScript

你用 TypeScript 语法写的 .ts .tsx 等后缀的程序是不能直接运行的,而是会被 tsconfig.json 配置中的 “target”: “es6”, 这项配置转换为 es6 语法的 .js 文件。
TypeScript 中的 import 只会加载 .ts .tsx 后缀的文件,而 Javascript 中的 import 只能加载 .js 等后缀的文件

TypeScript的优势

  • 规避静态类型出错:TS通过静态类型检查,能把错误从运行时提前至编译时,避免了一些基本bug。

  • 应对接口改变 快速准确
    假如后端改变了一些接口字段,可以通过直接改变编译出错的地方,快速替换。而不需要一个一个字段地寻找。

公司现在的前端项目大概有十几万行代码,各种从后端拿到的数据类型有上百种以前后端接口一改,要改字段,瞬间懵逼。全局搜索,一个个改,各种牵扯到的东西改下来再测试一顿估计小半天没了。用了 TypeScript 之后,把数据对应的 interface 改掉,然后重新编译一次,把编译失败的地方全部改掉就好了。而且在优秀的 TypeScript 架构中,业务开发基本不需要写类型,所有外部输入的类型都可以自动拿到,只需要把一些 local variable 和 output 的类型定义一下就好了,基本跟手写 ES 6 没有区别。写代码的过程中各种错误在越早期修改的成本就越低。试想没有静态检查跑一遍代码进某个奇怪的 case 才能复现的错误在写代码时期就直接给你的个错误提示,将是多么省时省力省钱。

ts js 区别

TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言。
JavaScript 是轻量级的解释性脚本语言,可嵌入到 HTML 页面中,在浏览器端执行。而TypeScript 是JavaScript 的超集,即包含JavaScript 的所有元素,能运行JavaScript 的代码,并扩展了JavaScript 的语法。相比于JavaScript ,它还增加了静态类型、类、模块、接口和类型注解方面的功能,更易于大项目的开发。

经过查阅资料,TypeScript 相比于JavaScript 的优势总结为以下几点:

1.便于开发人员做注释。
2.能帮助开发人员检测出错误并修改。
3.TypeScript工具使重构更变的容易、快捷。
4.TypeScript 引入了 JavaScript 中没有的“类”概念。
5.TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。
6.。类型安全功能能在编码期间检测错误,这为开发人员创建了一个更高效的编码和调试过

后续慢慢理解再补充。。。

现在RN工程中都改成ts、tsx了。

注意L:建议ts项目采用团队统一的tslint

参考链接必读

为什么推荐JSX来替换JS
TypeScript入门篇——基础知识(快速了解js与ts差异)

(005)RN开发 js jsx ts tsx的区别相关推荐

  1. .js/.jsx/.ts/.tsx

    .js是javascript文件的扩展名,例如main.js. .jsx是javascript文件并表明使用了JSX语法. .ts是typescript文件的扩展名 .tsx表明是typescript ...

  2. Typescript助力项目开发:JS切换TS、TS类型定制与思考

    TS已经成为可以帮助项目顺利开发的存在了.在上半年笔者就被要求采用TS开发新的项目,并在一些老项目中用TS去改造(因为沟通原因我以为某个远程组件只有TS版本).在其中也有了一些思考. 首先是目录结构. ...

  3. class ts 扩展方法_如使用Typescript撸Vue(Vue2 + TS +TSX+CSS module)

    Vue对TS的支持一致不太好,连Vue作者尤大也自嘲真香压错了宝.期待Vue3.0会用TS重构且会有较大改进.不过目前有一些第三方的库可以曲线优化对TS的支持.主要就介绍下过下面两个库来写Vue. 总 ...

  4. VUE3/TS/TSX入门手册指北

    VUE3入门手册 vue3入门 首先 查看 官方文档:https://cn.vuejs.org/guide/quick-start.html 如果有vue2基础,速成课程:https://www.zh ...

  5. iOS原生混合RN开发最佳实践

    iOS原生混合RN开发详解 做过原生iOS开发或者Android开发的同学们肯定也都了解Hybrid,有一些Hybrid的开发经验,目前我们企业开发中运用最广泛的Hybrid App技术就是原生与H5 ...

  6. RN开发(1)__环境搭建与样例

    目录 前言 正文 环境搭建 样例实现 问题整理(补充中) 相关资源链接 小结 Tip:使用"Ctrl+F",在搜索框中输入问题 前言 先要了解几个相关的词汇Node.js,Reac ...

  7. 旧机宝开发笔记之:RN开发编译器的选择

    学习RN开发的人大多是从其他领域延伸而来,因为RN目前可以跨越android.ios和web,那么学习RN的群体中主要就包括android开发者.ios开发者和web开发者,此外再增加一个直接入门RN ...

  8. RN开发实践——仿携程App(二)

    文章最后附上源码地址 上一片博客链接RN开发实践--仿携程App(一) 实现首页的轮播图 Swiper简介 The best Swiper component for React Native.Swi ...

  9. JS,ES,TS关系

    JS , ES , TS 的关系 1995年:JavaScript诞生 当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司. 由于网景公司希望能在静态HTML页 ...

最新文章

  1. Java笔记05-Collection、泛型、迭代器
  2. 阿里云服务网格ASM集成SLS告警
  3. 用友u8年度账文件服务器错误,用友u8erp软件出纳管理模块年度数据结转常见问题...
  4. transitionend、change、classList、兼容代码、元素样式属性的操作、-Attribute自定义属性、阻止跳转、元素绑定相同事件、元素解绑事件、事件冒泡、事件三阶段
  5. 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句
  6. Github标星35K+超火的Spring Boot实战项目(附项目地址+教程文档)
  7. error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int错误的解决方法
  8. react-native 错误捕捉与处理
  9. tshark过滤并保存包特定字段
  10. jar包引用版本不一致引发的问题
  11. neovim安装dein.vim
  12. win10重装后显示未安装任何音频输出设备
  13. 【智能算法】PSO粒子群算法求解无约束多元函数最值(Java代码实现)
  14. 淘宝客商家如何加入内容商品库?
  15. hive: size与spilt连用
  16. Spring boot Mybatis-Plus数据库单测实战(三种方式)
  17. photoshop标尺工具_如何在Photoshop中使用和掌握非常困难的钢笔工具
  18. android开发视频资源 电驴10G下载
  19. 2019年,IT行业发展前景
  20. 任正非:地震中,一座百年前建的教堂不倒所想到的

热门文章

  1. 怎么将一个十进制数转化为二进制数并打印出来
  2. Java Magic. Part 5: SecurityManager
  3. 批量导入导出站点权限site permissions
  4. 手动安装oracle软件 删软件
  5. englis translate,word
  6. 简单删除我的电脑里的wps云文档图标
  7. java.sql.SQLException: Zero date value prohibited 报错分析
  8. 洛谷 P4475 巧克力王国 解题报告
  9. 51nod 1225 余数之和(数论)
  10. 《JavaScript高级程序设计》心得笔记-----第四篇章