TypeScript手册翻译系列

TypeScript手册翻译系列2-接口

泄露秘密 提交于 2019-11-29 10:01:19
接口 TypeScript的一个核心原则是类型检测重点放在值的形状(shape),这有时候被称为鸭子类型化(duck typing)或结构子类型化(structural subtyping)。在TypeScript中,用接口(interfaces)来命名这些类型,来定义项目内部代码 的合约以及 与外部代码的契约。 第一个接口 理解interface如何工作,最容易的方式就是先看一个简单例子: function printLabel(labelledObj: {label: string}) { console.log(labelledObj.label); } var myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj); 当调用'printLabel'时 类型检测器开始检查 ,'printLabel'函数有单个参数,要求传入的对象有一个类型为string,名为 'label'的 属性。注意这里传入的对象有多个属性,但编译器仅检测所需要的属性存在而且类型匹配即可。 可以重写上面的例子,但这次是用接口来描述要 有一个类型为string,名为'label'的property : interface LabelledValue { label: string; } function printLabel

TypeScript手册翻译系列4-模块

*爱你&永不变心* 提交于 2019-11-29 10:01:03
模块 在TypeScript中利用 模块( module)来组织代码。这里将讨论内部和外部模块,以及在何时使用哪种方式更合适,以及怎么使用。当然也会讨论一些高级话题,例如如何使用外部模块,以及在 TypeScript中 使用模块时常见的一些错误。 第一步 让我们从下面的例子开始,这个例子将会贯穿本文。首先我们写了一段字符串验证代码,用来验证用户在web页面表单输入的信息,或者是检查外部文件提供的数据格式。 在单个文件中的Validator interface StringValidator { isAcceptable(s: string): boolean; } var lettersRegexp = /^[A-Za-z]+$/; var numberRegexp = /^[0-9]+$/; class LettersOnlyValidator implements StringValidator { isAcceptable(s: string) { return lettersRegexp.test(s); } } class ZipCodeValidator implements StringValidator { isAcceptable(s: string) { return s.length === 5 && numberRegexp.test(s); } } //

TypeScript手册翻译系列5-函数

蓝咒 提交于 2019-11-28 12:29:12
函数 函数是JavaScript中任意应用程序的基本构件块。可以在函数基础上建立抽象层,模拟类,信息隐藏,模块。在TypeScript中,虽然已经有类和模块,但函数函数仍然扮演着如何做事的关键角色。TypeScript还在标准 JavaScript 函数基础上增加了一些新的能力,来使得函数更容易使用。 函数 TypeScript与 JavaScript一样,都可以创建命名函数,也可以创建匿名函数。这样允许开发人员根据应用程序 选择 最合适的方式,不论是在一个API中建立一列函数还是建立一个one-off函数来转向另一个函数。 先快速看下JavaScript 中这两种方法是什么样的: // Named function-命名函数 function add(x, y) { return x+y; } //Anonymous function-匿名函数 var myAdd = function(x, y) { return x+y; }; 就像JavaScript中一样,函数可以返回变量。当返回变量时就称‘捕获’这些变量。理解这是如何工作,以及使用该技术时需要注意哪些事项,虽然超出了本片文章范围,但 要掌握JavaScript和TypeScript语言,就需要 对该机制能够有透彻理解。 var z = 100; function addToZ(x, y) { return x+y+z;

TypeScript手册翻译系列3-类

笑着哭i 提交于 2019-11-28 12:29:01
类 传统的JavaScript语言基于函数和原型链继承机制的方式构建可重用的组件,但这对于OO编程人员来说显得比较笨拙,因为是在类的基础上来继承。从JavaScript标准ECMAScript 6开始可以采用面向对象 基于 类来构建应用。在TypeScript中开发人员现在就可以使用这些技术,TypeScript可以将它们编译为目前大多数浏览器和平台能允许的普通Javascript代码, 可以不用等待下一版本的JavaScript的到来。 类 我们先看一个基于类的简单例子: class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } } var greeter = new Greeter("world"); 这种语法和c#或java语言中的语法很相似。这里我们声明了一个'Greeter'类,这个类有三个成员:一个'greeting'属性,一个构造函数,和一个'greet'方法。 你也许已经注意到了例子中在引用成员时前面的'this.',表示这是一个成员访问。 在最后一行我们利用‘new’关键字创建了一个'Greeter'类的实例,这会用' Greeter' shape