TypeScript

  • 《TypeScript中文入门教程》17、注解

    《TypeScript中文入门教程》17、注解

    介绍 随着TypeScript和ES6里引入了类,现在在一些场景下我们会需要额外的特性来支持注解或修改类和类成员。 Decorators提供了一种方式来添加注解和在类的声明和成员上使用元编程语法。 Javascript里的Decorators目前处在建议征集的第一阶段,在TypeScript里做为实验性特性已经提供了支持。 注意  Decorators是实验性的特性,在未来的版本中可能会发生改变。 若要启用实验性的decorator,你必须启用experimentalDecorators编译...

    TypeScript 2019-12-04 47 0
  • 《TypeScript中文入门教程》16、Symbols

    《TypeScript中文入门教程》16、Symbols

    介绍 至ECMAScript 2015开始,symbol成为了一种新的原始类型,就像number和string一样。 symbol类型的值是通过Symbol构造函数创建的。 var sym1 = Symbol(); var sym2 = Symbol("key"); // 可选的字符串key Symbols是不可改变的且唯一。 var sym2 = Symbol("key"); var sym3 = Symbol("key"); sym2 === sym3; // false, symb...

    TypeScript 2019-12-04 47 0
  • 《TypeScript中文入门教程》15、可迭代性

    《TypeScript中文入门教程》15、可迭代性

    可迭代性 当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的。 一些内置的类型如Array,Map,Set,String,Int32Array,Uint32Array等都已经实现了各自的Symbol.iterator。 对象上的Symbol.iterator函数负责返回供迭代的值。 for..of语句 for..of会遍历可迭代的对象,调用对象上的Symbol.iterator属性。 下面是在数组上使用for..of的简单例子: let someArray = [1, "string...

    TypeScript 2019-12-04 45 0
  • 《TypeScript中文入门教程》14、输入.d.ts文件

    《TypeScript中文入门教程》14、输入.d.ts文件

    介绍 当使用外部JavaScript库或新的宿主API时,你需要一个声明文件(.d.ts)定义程序库的shape。 这个手册包含了写.d.ts文件的高级概念,并带有一些例子,告诉你怎么去写一个声明文件。 指导与说明 流程 最好从程序库的文档开始写.d.ts文件,而不是代码。 这样保证不会被具体实现所干扰,而且相比于JS代码更易读。 下面的例子会假设你正在参照文档写声明文件。 命名空间 当定义接口(例如:“options”对象),你会选择是否将这些类型放进命名空间里。 这主要是靠主...

    TypeScript 2019-12-04 41 0
  • 《TypeScript中文入门教程》13、类型兼容性

    《TypeScript中文入门教程》13、类型兼容性

    介绍 TypeScript里的类型兼容性基于结构子类型的。 结构类型是只一种只使用其成员来描述类型的方式。 它正好与名义类型形成对比。 看下面的例子: interface Named { name: string; } class Person { name: string; } var p: Named; // OK, because of structural typing p = new Person(); 在使用名义类型的语言,比如C#或Java中,这段代码...

    TypeScript 2019-12-04 65 0
  • 《TypeScript中文入门教程》12、类型推导

    《TypeScript中文入门教程》12、类型推导

    介绍 这节介绍TypeScript里的类型推论。即,类型是在哪里如何被推断的。 基础 TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。如下面的例子 var x = 3; 变量x的类型被推断为数字。 这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时。 大多数情况下,类型推论是直截了当地。 后面的小节,我们会浏览类型推论时的细微差别。 最佳通用类型 当需要从几个表达式中推断类型时候,会使用这些表达式的类型来推断出一个最合适的通用类型。例如, var x...

    TypeScript 2019-12-04 50 0
  • 《TypeScript中文入门教程》11、声明合并

    《TypeScript中文入门教程》11、声明合并

    介绍 TypeScript有一些独特的概念,有的是因为我们需要描述JavaScript顶级对象的类型发生了哪些变化。 这其中之一叫做声明合并。 理解了这个概念,对于你使用TypeScript去操作现有的JavaScript来说是大有帮助的。 同时,也会有助于理解更多高级抽象的概念。 首先,在了解如何进行声明合并之前,让我们先看一下什么叫做声明合并。 在这个手册里,声明合并是指编译器会把两个相同名字的声明合并成一个单独的声明。 合并后的声明同时具有那两个被合并的声明的特性。 声明合并不限于只合并两个,任意数量都...

    TypeScript 2019-12-04 40 0
  • 《TypeScript中文入门教程》10、混入

    《TypeScript中文入门教程》10、混入

    介绍 除了传统的面向对象继承方式,还流行一种通过可重用组件创建类的方式,就是联合另一个简单类的代码。 你可能在Scala等语言里对mixins及其特性已经很熟悉了,但它在JavaScript中也是很流行的。 混入示例 下面的代码演示了如何在TypeScript里使用混入。 后面我们还会解释这段代码是怎么工作的。 // Disposable Mixin class Disposable { isDisposed: boolean; dispose() { this.is...

    TypeScript 2019-12-04 56 0
  • 《TypeScript中文入门教程》9、泛型

    《TypeScript中文入门教程》9、泛型

    介绍 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。 在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。 泛型之Hello World 下面来创建第一个使用泛型的例子:identity函数。 这个函数会返回任何传入它的值。 你可以把这个函数当成是echo命令。 不用泛型的话,这个函数可能...

    TypeScript 2019-12-04 51 0
  • 《TypeScript中文入门教程》8、函数

    《TypeScript中文入门教程》8、函数

    介绍 函数是JavaScript应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。 TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易的使用。 函数 和JavaScript一样,TypeScript函数可以创建有名字的函数和匿名函数。 你可以随意选择适合应用程序的方式,不论是定义一系列API函数还是只使用一次的函数。 通过下面的例子可以迅速回想起这两种JavaScript中...

    TypeScript 2019-12-04 38 0
  • 《TypeScript中文入门教程》7、模块

    《TypeScript中文入门教程》7、模块

    关于术语的一点说明:请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说module X {相当于现在推荐的写法namespace X {)。 介绍 关于术语的一点说明:请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 &ldquo...

    TypeScript 2019-12-04 38 0
  • 《TypeScript中文入门教程》6、命名空间

    《TypeScript中文入门教程》6、命名空间

    关于术语的一点说明:请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说module X {相当于现在推荐的写法namespace X {)。 介绍 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)...

    TypeScript 2019-12-04 39 0
  • 《TypeScript中文入门教程》5、命名空间和模块

    《TypeScript中文入门教程》5、命名空间和模块

    关于术语的一点说明:请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说module X {相当于现在推荐的写法namespace X {)。 介绍 这篇文章将概括介绍在TypeScript里使用模块与命名空间来组织代码的方法。 我们也会谈及命名空间和模块...

    TypeScript 2019-12-04 37 0
  • 《TypeScript中文入门教程》4、类

    《TypeScript中文入门教程》4、类

    介绍 传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但这对于熟悉使用面向对象方式的程序员来说有些棘手,因为他们用的是基于类的继承并且对象是从类构建出来的。 从ECMAScript 2015,也就是ECMAScript 6,JavaScript程序将可以使用这种基于类的面向对象方法。 在TypeScript里,我们允许开发者现在就使用这些特性,并且编译后的JavaScript可以在所有主流浏览器和平台上运行,而不需要等到下个JavaScript版本。 类 下面看一个使用类的例子:...

    TypeScript 2019-12-04 37 0
  • 《TypeScript中文入门教程》3、接口

    《TypeScript中文入门教程》3、接口

    介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。 接口初探 下面通过一个简单示例来观察接口是如何工作的: function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label); }...

    TypeScript 2019-12-04 41 0