TypeScript初探

TypeScript什么?

官方给的定义:TypeScript是一种由微软开发的自由和开源的编程语言,它是JavaScript类型的超集,可以编译成纯JavaScript,本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。当前TypeScript 2.6 已发布。

TypeScript能做什么?

背景

  TypeScript 起源于开发应用程序规模的 JavaScript 应用程序的需求。Microsoft的语言开发者们说内部以及外部的客户都表示他们构建 JavaScript 代码的问题。
很多最终依赖于 JavaScript 的开发者通常用编译为 JavaScript 代码的另一种语言写脚本,例如 CoffeeScript 和 Script# (读作 ScriptSharp)。一个明显的劣势是也许无法从那另一种语言使用任何 JavaScript 的具体的语言特性,如果那种语言不支持它的话。在 Microsoft 内部,它导致了自定义工具以简化 JavaScript 组件的编写的需求。

框架应用

  更直观的表现在,当前的前端主流框架:1. React,2. Angular :Angular团队建议在所有的Angular项目中使用TypeScript。3. Vue.js 等

特性

  TypeScript 是一种给 JavaScript 添加特性的语言扩展。

  

● 类型批注和编译时类型检查

  

Boolean

在JavaScript和TypeScript中也具有最基本的逻辑断言值true/false,采用’boolean’类型。

var isDone: boolean = false;

Number

如JavaScript,TypeScript所有的数值类型采用浮点型计数,其类型为‘number’。

var height: number = 6;

String

在webpages的JavaScript或者服务端的应用程序最基本的功能就是处理文本数据。在其他语言中大多使用’string’去代表文本数据类型。TypeScript和JavaScript一样也是用双引号(“)或者单引号包裹文本数据。

var name: string = "bob";
name = 'smith';

Array

在TypeScript中如JavaScript一样允许我们操结合操作。数组类型可以使用下边两种方式之一。

第一种方式,你可以在数据类型之后带上’[]‘:

var list:number[] = [1, 2, 3];

第二种方式,也可以采用泛型的数组类型:

var list:Array<number> = [1, 2, 3];

Enum

TypeScript为JavaScript新增了枚举这种标准的集合数据类型。和在c#中一样,枚举是为一组数值类型一组更友好的名称:

enum Color {Red, Green, Blue};
var c: Color = Color.Green;

Any

有时我们需要描述一些我们不知道的什么写进应用的动态数据类型,这可能来自第三方用户或者lib。在这里我们希望该数据不要加入TypeScript的类型检查,是的此值通过编译时检查。为此我们可以采用‘any’类型标注:

var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
var list:any[] = [1, true, "free"];

list[1] = 100;

Void

和‘any’相对的数据类型则是’Void‘,它代表没有任何数据类型。我们常用的一个方法没有任何返回值:

function warnUser(): void {
alert("This is my warning message");
}

●类

TypeScript 支持集成了可选的类型批注支持的 ECMAScript6 的类。比如支持基于类的面向对象编程。比如创建一个Student类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起共作,程序员可以自行决定抽象的级别。还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。

class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
} interface Person {
firstName: string;
lastName: string;
} function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
} let user = new Student("Jane", "M.", "User"); document.body.innerHTML = greeter(user);

●接口

使用接口来描述一个拥有firstNamelastName字段的对象。 在TypeScript里,只在两个类型内部的结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含了接口要求的结构就可以,而不必明确地使用 implements语句。
interface Person {
firstName: string;
lastName: string;
} function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
} let user = { firstName: "Jane", lastName: "User" }; document.body.innerHTML = greeter(user);

●模块

module:模块是自声明的;两个模块之间的关系是通过在文件级别上使用imports和exports建立的。

 

项目配置:tsconfig.json

概述:

如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。

始于JavaScript,归于JavaScript

TypeScript提供最新的和不断发展的JavaScript特性,包括那些来自2015年的ECMAScript和未来的提案中的特性,比如异步功能和Decorators,以帮助建立健壮的组件。这些特性为高可信应用程序开发时是可用的,但是会被编译成简洁的ECMAScript3(或更新版本)的JavaScript。

 
 

TypeScript初探的更多相关文章

  1. TypeScript之interface初探

    TypeScript的核心原则之一是对值所具有的结构进行类型检查,在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. function printLabel(la ...

  2. 初探typescript

    学习任何知识都不是一蹴而就的.typescript也是如此.今天我们来初步的了解一下typescript的安装与编译.以及基础的语法知识. 第一步:安装ts 第二步:在安装好的文件夹里面,写上ts文件 ...

  3. 转载:《TypeScript 中文入门教程》 3、接口

    版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查. 它有时 ...

  4. 从 JavaScript 到 TypeScript

    本文首发在我的个人博客:http://muyunyun.cn/posts/66a54fc2/ 文中的案例代码已经上传到 TypeScript TypeScript 并不是一个完全新的语言, 它是 Ja ...

  5. 在Vue 中使用Typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  6. Vue 中使用 typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  7. 初探webpack之编写plugin

    初探webpack之编写plugin webpack通过plugin机制让其使用更加灵活,以适应各种应用场景,当然也大大增加了webpack的复杂性,在webpack运行的生命周期中会广播出许多事件, ...

  8. 初探webpack之从零搭建Vue开发环境

    初探webpack之搭建Vue开发环境 平时我们可以用vue-cli很方便地搭建Vue的开发环境,vue-cli确实是个好东西,让我们不需要关心webpack等一些繁杂的配置,然后直接开始写业务代码, ...

  9. 初探webpack之编写loader

    初探webpack之编写loader loader加载器是webpack的核心之一,其用于将不同类型的文件转换为webpack可识别的模块,即用于把模块原内容按照需求转换成新内容,用以加载非js模块, ...

随机推荐

  1. mac 电脑进入root用户

    一.使用命令:sudo su -:命令执行后输入密码

  2. fiddler抓包工具

    转载: http://www.cr173.com/html/15341_1.html https://www.cnblogs.com/shihaiming/p/5887654.html 软件简介: 数 ...

  3. docker镜像的使用及相关

    参考网站docker中文网:http://www.docker.org.cn/book/docker/docker-push-image-13.html 1.搜索容器: docker search t ...

  4. 树上背包O(n*m^2)|| 多叉树转二叉树 || o(n*m)???

    #. 选课 描述 提交 自定义测试 问题描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有 ...

  5. C# .Net 中字典Dictionary<TKey,TValue>泛型类 学习浅谈

    一.综述: Dictionary<TKey,TValue>是在 .NET Framework 2.0 版中是新增的.表示键值对的集合,Dictionary<TKey,TValue&g ...

  6. Beta冲刺4/7

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(4/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 ppt模板 接下来的计划 做好机动. ...

  7. html 转 PDF wkhtmltopdf image 不能显示的问题

    把src的路径修改为本地路径 就可以,如 <img src="file:///C:\a.jpg">

  8. matplotlib图例-【老鱼学matplotlib】

    图例是啥,直接上图就知道了: 怎么创建上面的图例呢? 很简单,首先在plt.plot()函数中设置label文本属性,然后调用plt.legend()生成图例就可以了,完整的代码如下: import ...

  9. redis学习(八)——redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...

  10. 微信小程序--家庭记账本开发--03

    组件.标签以及模板的使用 在一个微信小程序中,需要用到大量的组件,一些页面的设计也需要模板,在自己所学课程中,对于一些组件.标签模板的使用有了初步的了解. 1.组件 组件是数据和方法的简单封装,对于微 ...