前言

在介绍Typescript 之前,我需要隆重介绍一个人:

安德斯·海尔斯伯格(Anders Hejlsberg,1960.12~),丹麦人,Turbo Pascal编译器的主要作者,Delphi和C#之父,同时也是·NET创立者。当然现在也是Typescript的创始者。目前是就职微软,是微软技术领域的智囊团之一。

1.简单介绍Typescript

http://www.typescriptlang.org/ 这是Typescript的官方网站,在这里,可以找到英文的关于Typescript的语法介绍,(我会在后面几节也介绍相关知识),TypeScript 是微软开发的 JavaScript 的超集,TypeScript编译后会生成JavaScript,项目可以载入生成后的JavaScript代码然后运行。如果有JavaScript的知识,学起来如鱼得水,学习的时候,推荐使用Visual Studio,做一个项目,有个强大的IDE支持,再好不过了。另外,Visual Studio对Typescript有着完美的支持,类似智能提示,错误提示,编译运行,工程文件管理等等。谁让Typescript是微软的又一个新生儿呢,当然,也有别的Typescript的编译器,这里就不在详述了。

2.书写JavaScript时候,你有什么烦恼?

  • JavaScript是个神一样的语言,灵活性之高,没有哪种语言可以匹敌,如此高的灵活性,大虾和菜鸟,同样的功能,写出来的风格肯定是截然不同,如何去管理我们的code?
  • JavaScript在任何IDE下,编译时候不会报错,但是在运行时,没有规律的JavaScript的错误是漫天飞。
  • 在书写JavaScript时候,如果没有modules的概念的话,没有遵循CommonJs的规范的话,那么自己写的JavaScript的变量必然会和别人写的重名变量冲突,或许甚至可能影响 第三方JS类库的正常使用。
  • 有没有更改变量名字的时候,是不是想死的心都有?
  • 你是不是有狠下心refactor的时候,但是,最终受不了JavaScript的折磨,放弃了?
  • 如此灵活但疯狂的JavaScript,你是不是对它爱恨交加呢?

3.找个老婆来管理桀骜不驯的JavaScript

JavaScript 只是一个脚本语言,并非设计用于开发大型 Web 应用,但是最近Html5的流行,手机网页应用的不断发展,越来越多的项目使用纯JavaScript来开发,那么在编写JavaScript的是,如何提高代码质量,如果依靠JavaScript的本身的语言特性,太难了,我相信即使是大牛的Team,也不会轻易说我能解决这个问题。TypeScript由此而生,它帮助并实现了JavaScript以下这些特性。TypeScript 主要特点包括:

  • TypeScript 是微软推出的开源语言,使用 Apache 授权协议
  • TypeScript 是 JavaScript 的超集.
  • TypeScript 增加了可选类型、类和模块
  • TypeScript 可编译成可读的、标准的 JavaScript
  • TypeScript 支持开发大规模 JavaScript 应用
  • TypeScript 设计用于开发大型应用,并保证编译后的 JavaScript 代码兼容性
  • TypeScript 文件扩展名是 ts,而 TypeScript 编译器会编译成 js 文件
  • TypeScript 语法与 JScript .NET 相同,如果你有C#的编写竟然,那基本熟悉了Typescript的语法。
  • Typescript 可以更加方便的Debug项目。
  • Typescript 可以帮助实现类似程序集 assembly的管理。
  • Typescript 可以方便的实现Unit Test的管理

4.语法特性

  • 类 Classes
  • 接口 Interfaces
  • 模块 Modules
  • 类型注解 Type annotations
  • 编译时类型检查 Compile time type checking(这个太重要了,可以在程序运行之前的编译阶段,就可以发现错误。试想单纯的JavaScript怎么可能做到呢?)
  • Arrow 函数 (类似 C# 的 Lambda 表达式)

今天就先写到这,后面我还会抽空更新相关的资料,项目中,我们Team已经用Typescript在今年开发了3个大型JavaScript项目,而且用Typescript开发,书写UnitTest的时候,非常简单,这样,我们的Project的代码容错率为 8/1000. 所以,我非常想推荐大家尝试下Typescript,用Typescript开发的时候,可能你会觉得别扭,没有JavaScript书写那么的自由,如果没有质量保证的话,开发时间+查找问题时间+更改Bug时间 》远大于》 开发时间+Unit Test Time。本人在Typescript 0.8.1的时候开始使用,现在Typescript已经更新到0.9.5,感觉非常不错,Typescript语法糖不断的创新,感谢微软所做的一切。

为什么选择Typescript

Typescript 团队合作的利器的更多相关文章

  1. GitHub 系列之「团队合作利器 Branch」

    Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到过,但是本篇会详细讲述什么是分支.分支的 ...

  2. 从0开始学习 GITHUB 系列之「团队合作利器 BRANCH」【转】

    本文转载自:http://stormzhang.com/github/2016/07/09/learn-from-github-from-zero6/ 版权声明:本文为 stormzhang 原创文章 ...

  3. 从0开始学习 GitHub 系列之「06.团队合作利器 Branch」

    Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到过,但是本篇会详细讲述什么是分支.分支的 ...

  4. 使用GitHub进行团队合作

    原文: Team Collaboration With GitHub GitHub已经成为的一切开放源码软件的基石.开发人员喜欢它,基于它进行协作,并不断通过它开发令人惊叹的项目.除了​​代码托管,G ...

  5. 《编写高质量代码-Web前端开发修改之道》笔记--第二章 团队合作

    本章内容: 揭秘前端开发工程师 欲精一行,必先通十行 增加代码的可读性--注释 提高重用性--公共组件和私有组件的维护 冗余和精简的矛盾--选择集中还是选择分散 磨刀不误砍柴工--前期的构思很重要 制 ...

  6. 团队合作-如何避免JS冲突

    解决JS冲突的演化过程 1.用匿名函数将脚本包裹起来,可以有效控制全局变量,避免冲突隐患 (function(){})(): 2.定义一个全局作用域的变量str,可以帮助我们在不同匿名函数间通信 严格 ...

  7. 团队合作one

    一.项目介绍 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...

  8. 团队合作学习scrum

    查找资料学习scrum心得: 什么是scrum : scrum是一种轻量级软件开发方法,即一种做事的方法.scrum原本是指橄榄球运动的一个专业术语,原意为团队通力合作,在场地内传球.这个过程需要认真 ...

  9. scrum和团队合作

    一. 队名及宣言 队名 the better for you 宣言Change our lives with code 二. 队员及分工 a.承担软件工程的角色 姓名 学号 角色 张美庆 B20150 ...

随机推荐

  1. Android开发者必知的开发资源

    推荐书籍 我推荐下面两本书: The Busy Coder’s Guide to Android Development <The Busy Coder’s Guide to Android D ...

  2. MyEclipse6.5安装SVN插件的三种方法z

    一.安装方法: 方法一.如果可以上网可在线安装   . 打开Myeclipse,在菜单栏中选择Help→Software Updates→Find and Install;   . 选择Search ...

  3. gcc c语言中scanf输入格式不正确,清空缓冲区问题

    我的博客:www.while0.com 折磨了一下午,只因为fflush(stdin)再gcc里和vc里表现不一致.gcc里不能够清空缓冲区.直接上例子: #include <stdio.h&g ...

  4. git日志的查看与修改

    1.命令行中查看日志 git log 默认是显示所有的日志信息,之前出来的界面显示的日志,很少. 最后发现,只需要使用键盘上向下键↓,就可以继续浏览更多的日志 空格键,可以翻页浏览日志. 向左←  向 ...

  5. Eclipse C/C++环境配置

    一.C/C++环境配置: Window - Preferences - C/C++ 1. Editor - Content Assist - Auto-Activation - Delay(ms),原 ...

  6. 新手入门 acm 输入输出练习

    A + B Problem(1000) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  7. 一个cocos2d程序的完整人生(从环境到代码全过程)

    今天我的打砖块小游戏Beta0.1终于完成了,比较开心,写一下这个程序从出生到长大的全过程把. 这是个博客集合帖,具体的操作细节我都在其它博文中有详细说明,下面会给出链接   首先,我想我还是要介绍一 ...

  8. android源码编译环境的准备及编译之后使用emulator运行的方法 - 官方版

    http://source.android.com/source/initializing.html http://blog.csdn.net/ithomer/article/details/6977 ...

  9. SQLyog之MySQL客户端的下载、安装和使用

    本博文的主要内容有 .SQLyog的下载 .SQLyog的安装 .SQLyog的使用 1.SQLyog的下载 1.进入SQLyog官网,  https://www.webyog.com/en    或 ...

  10. 用python正则表达式提取字符串

    在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣的可以看re的教程. 提取一般分两种 ...