From 6318a4588d266db81025a310c4be2c135f010822 Mon Sep 17 00:00:00 2001 From: Gear Date: Sun, 12 Feb 2017 21:45:06 +0800 Subject: [PATCH 001/210] Update class.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 如果只写返回``my name is ${name}``会报 `ReferenceError: name is not defined`~ --- advanced/class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/class.md b/advanced/class.md index 676da554..c8cf1b77 100644 --- a/advanced/class.md +++ b/advanced/class.md @@ -347,7 +347,7 @@ class Animal { this.name = name; } sayHi(): string { - return `My name is ${name}`; +    return `My name is ${this.name}`; } } From 6f3f1d1918b6ff9a9f27b8c5092d04e7e2d6f806 Mon Sep 17 00:00:00 2001 From: Wang Guan Date: Sun, 29 Jan 2017 17:21:59 +0900 Subject: [PATCH 002/210] =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=96=AD=E8=A8=80?= =?UTF-8?q?=E7=9A=84=E4=B8=A4=E7=A7=8D=E8=AF=AD=E6=B3=95=E5=92=8C=E7=94=A8?= =?UTF-8?q?=E9=80=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basics/type-assertion.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/basics/type-assertion.md b/basics/type-assertion.md index 7a02f5f9..baea93c1 100644 --- a/basics/type-assertion.md +++ b/basics/type-assertion.md @@ -1,8 +1,20 @@ # 类型断言 -类型断言(Type Assertion)用来手动将一个联合类型的变量指定为一个更加具体的类型。 +类型断言(Type Assertion)可以用来绕过编译器的类型推断,手动指定一个值的类型(即程序员对编译器**断言**)。 -## 简单的例子 +## 语法 + +```ts +<类型>值 + +// 或 + +值 as 类型 + +// 在TSX语法 (React的JSX语法的TS版)中必须用后一种 +``` + +## 例子:将一个联合类型的变量指定为一个更加具体的类型 [之前提到过](union-types.md#访问联合类型的属性或方法),当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们**只能访问此联合类型的所有类型里共有的属性或方法**: @@ -61,6 +73,7 @@ function toBoolean(something: string | number): boolean { ## 参考 +- [TypeScript Deep Dive / Type Assertion](https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html) - [Advanced Types # Type Guards and Differentiating Types](http://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Advanced%20Types.html#类型保护与区分类型(type-guards-and-differentiating-types))) --- From 30c828fc89e00627c8d6c32f577c518661f7130b Mon Sep 17 00:00:00 2001 From: Wang Guan Date: Sun, 29 Jan 2017 16:54:05 +0900 Subject: [PATCH 003/210] =?UTF-8?q?-=E6=89=8B=E5=8A=A8=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E7=9A=84=E6=9E=9A=E4=B8=BE=E9=A1=B9=E5=8F=AA=E8=83=BD=E4=B8=BA?= =?UTF-8?q?=E6=95=B0=E5=AD=97=20+=E6=89=8B=E5=8A=A8=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E7=9A=84=E6=9E=9A=E4=B8=BE=E9=A1=B9=E5=8F=AF=E4=BB=A5=E4=B8=8D?= =?UTF-8?q?=E6=98=AF=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- advanced/enum.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/advanced/enum.md b/advanced/enum.md index 4d2ee7af..9f37a27e 100644 --- a/advanced/enum.md +++ b/advanced/enum.md @@ -84,15 +84,26 @@ var Days; 所以使用的时候需要注意,最好不要出现这种覆盖的情况。 -手动赋值的枚举项只能为数字,任何其他类型都是不被允许的: +手动赋值的枚举项可以不是数字,此时需要使用类型断言来让tsc无视类型检查 (编译出的js仍然是可用的): ```ts -enum Days {Sun = 7, Mon, Tue, Wed, Thu, Fri, Sat = "S"}; +enum Days {Sun = 7, Mon, Tue, Wed, Thu, Fri, Sat = "S"}; +``` -// index.ts(1,52): error TS2322: Type 'string' is not assignable to type 'Days'. +```js +var Days; +(function (Days) { + Days[Days["Sun"] = 7] = "Sun"; + Days[Days["Mon"] = 8] = "Mon"; + Days[Days["Tue"] = 9] = "Tue"; + Days[Days["Wed"] = 10] = "Wed"; + Days[Days["Thu"] = 11] = "Thu"; + Days[Days["Fri"] = 12] = "Fri"; + Days[Days["Sat"] = "S"] = "Sat"; +})(Days || (Days = {})); ``` -当然,手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长任为 `1`: +当然,手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长仍为 `1`: ```ts enum Days {Sun = 7, Mon = 1.5, Tue, Wed, Thu, Fri, Sat}; From 61806a3503a75dcab7e4d11f4b0d9318184ecaf2 Mon Sep 17 00:00:00 2001 From: Wang Guan Date: Sun, 29 Jan 2017 17:06:30 +0900 Subject: [PATCH 004/210] =?UTF-8?q?TS2.1=E4=B8=AD=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E4=BA=86=E5=AF=B9any=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basics/type-inference.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/basics/type-inference.md b/basics/type-inference.md index 8f3809c3..51752e4f 100644 --- a/basics/type-inference.md +++ b/basics/type-inference.md @@ -24,7 +24,7 @@ myFavoriteNumber = 7; TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。 -**如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型**: +**在TypeScript 2.1 之前,如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型而完全不被类型检查**: ```ts let myFavoriteNumber; @@ -32,9 +32,12 @@ myFavoriteNumber = 'seven'; myFavoriteNumber = 7; ``` +**TypeScript 2.1 中,编译器会考虑对 myFavoriteNumber 的最后一次赋值来检查类型**:[例](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#improved-any-inference) + ## 参考 - [Type Inference](http://www.typescriptlang.org/docs/handbook/type-inference.html)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Type%20Inference.html)) +- [TypeScript 2.1 Release Note](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html) --- From 700b7714e3aa1adcd3a52ec8222c9059b241f48a Mon Sep 17 00:00:00 2001 From: tangdunwang <823926507@qq.com> Date: Thu, 9 Mar 2017 23:45:15 +0800 Subject: [PATCH 005/210] Update class.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、this 掉了 2、我认为 “子类中使用 super 表示父类的构造函数”,容易引起误解。super 是关键字,不表示构造函数。参考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super --- advanced/class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/advanced/class.md b/advanced/class.md index c8cf1b77..45d01a80 100644 --- a/advanced/class.md +++ b/advanced/class.md @@ -37,7 +37,7 @@ class Animal { this.name = name; } sayHi() { - return `My name is ${name}`; + return `My name is ${this.name}`; } } @@ -47,7 +47,7 @@ console.log(a.sayHi()); // My name is Jack ### 类的继承 -使用 `extends` 关键字实现继承,子类中使用 `super` 表示父类的构造函数。 +使用 `extends` 关键字实现继承,子类中使用 `super` 关键字来调用父类的构造函数和方法。 ```js class Cat extends Animal { From 67be741787f02494d9ddfa6dee95472892e386aa Mon Sep 17 00:00:00 2001 From: Cody Chan Date: Sun, 11 Jun 2017 20:35:58 +0800 Subject: [PATCH 006/210] Fix invalid link --- basics/declaration-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basics/declaration-files.md b/basics/declaration-files.md index 59bee1d5..139226fc 100644 --- a/basics/declaration-files.md +++ b/basics/declaration-files.md @@ -58,7 +58,7 @@ jQuery('#foo'); ## 第三方声明文件 -当然,jQuery 的声明文件不需要我们定义了,已经有人帮我们定义好了:[jQuery in DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/jquery)。 +当然,jQuery 的声明文件不需要我们定义了,已经有人帮我们定义好了:[jQuery in DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jquery/index.d.ts)。 我们可以直接下载下来使用,但是更推荐的是使用工具统一管理第三方库的声明文件。 From b4a7e7dd359557d730fe0f0b37e83e92f5fb6af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=B5=A9=E9=BA=9F?= Date: Sun, 6 Aug 2017 14:23:26 +0800 Subject: [PATCH 007/210] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=E7=AE=80?= =?UTF-8?q?=E4=BD=93=E4=B8=AD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book.json b/book.json index 0fb81536..5028c9ba 100644 --- a/book.json +++ b/book.json @@ -2,7 +2,7 @@ "title": "TypeScript 入门教程", "description": "从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。", "author": "xcatliu ", - "language": "zh", + "language": "zh-hans", "plugins": ["disqus", "github"], "pluginsConfig": { "disqus": { From b834a3244b8a700a275a7403b16e1b4d60804657 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Sat, 7 Oct 2017 08:55:16 -0500 Subject: [PATCH 008/210] Update enum.md --- advanced/enum.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/enum.md b/advanced/enum.md index 9f37a27e..6a8bd95b 100644 --- a/advanced/enum.md +++ b/advanced/enum.md @@ -224,7 +224,7 @@ let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Ri var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */]; ``` -> 枚举类型的概念[来源于 C#][C# Enum]。 +> TypeScript 的枚举类型的概念[来源于 C#][C# Enum]。 ## 参考 From 85f5da4c6039d558aa50962f635e13b9a8b1ac86 Mon Sep 17 00:00:00 2001 From: Wang Guan Date: Mon, 30 Oct 2017 12:00:56 +0000 Subject: [PATCH 009/210] add default type params of generics --- advanced/generics.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/advanced/generics.md b/advanced/generics.md index 7aa2e952..7c9279ce 100644 --- a/advanced/generics.md +++ b/advanced/generics.md @@ -156,7 +156,7 @@ interface CreateArrayFunc { let createArray: CreateArrayFunc; createArray = function(length: number, value: T): Array { - let result = []; + let result: T[] = []; for (let i = 0; i < length; i++) { result[i] = value; } @@ -175,7 +175,7 @@ interface CreateArrayFunc { let createArray: CreateArrayFunc; createArray = function(length: number, value: T): Array { - let result = []; + let result: T[] = []; for (let i = 0; i < length; i++) { result[i] = value; } @@ -202,6 +202,20 @@ myGenericNumber.zeroValue = 0; myGenericNumber.add = function(x, y) { return x + y; }; ``` +## 类型参数的默认类型 + +在 TypeScript 2.3 以后,我们可以为泛型中的类型参数指定默认类型。当使用泛型时没有在代码中直接指定类型参数,从实际 (值) 参数中也无法推测出时,这个默认类型会起作用。 + +```ts +function foo(e?: T[]): T[] { + return (e ? e : []) as T[]; +} + +const specified: string[] = foo([]); +const inferred: string[] = foo([""]); +const default_used: number[] = foo(); +``` + ## 参考 - [Generics](http://www.typescriptlang.org/docs/handbook/generics.html)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/generics.html)) From 07bf9193766c1ee0d3ea543cbc343c9fd7fc8cb1 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Tue, 31 Oct 2017 20:14:34 +0800 Subject: [PATCH 010/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20primitive-data-typ?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ basics/primitive-data-types.md | 2 +- introduction/hello-typescript.md | 2 +- introduction/what-is-typescript.md | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 790db4a1..877d3cb4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ node_modules _book .DS_Store *.log + +playground \ No newline at end of file diff --git a/basics/primitive-data-types.md b/basics/primitive-data-types.md index 9305d8b4..81814e80 100644 --- a/basics/primitive-data-types.md +++ b/basics/primitive-data-types.md @@ -23,7 +23,7 @@ let isDone: boolean = false; let createdByNewBoolean: boolean = new Boolean(1); // index.ts(1,5): error TS2322: Type 'Boolean' is not assignable to type 'boolean'. -// 后面约定,未强调编译错误的代码片段,默认为编译通过 +// 后面约定,注释中标出了编译报错的代码片段,表示编译未通过 ``` 事实上 `new Boolean()` 返回的是一个 `Boolean` 对象: diff --git a/introduction/hello-typescript.md b/introduction/hello-typescript.md index 1ceb8e2d..b9ea9b40 100644 --- a/introduction/hello-typescript.md +++ b/introduction/hello-typescript.md @@ -51,7 +51,7 @@ console.log(sayHello(user)); 编辑器中会提示错误,编译的时候也会出错: ```shell -index.ts(6,36): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'. +index.ts(6,22): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'. ``` 但是还是生成了 js 文件: diff --git a/introduction/what-is-typescript.md b/introduction/what-is-typescript.md index 6d806ba9..3498a617 100644 --- a/introduction/what-is-typescript.md +++ b/introduction/what-is-typescript.md @@ -2,7 +2,7 @@ 首先,我对 TypeScript 的理解如下: -[TypeScript] 是 JavaScript 的一个超集,主要提供了**类型系统**和**对 ES6 的支持**,它由 Microsoft 开发,代码[开源于 GitHub](https://github.com/Microsoft/TypeScript) 上。 +[TypeScript][] 是 JavaScript 的一个超集,主要提供了**类型系统**和**对 ES6 的支持**,它由 Microsoft 开发,代码[开源于 GitHub](https://github.com/Microsoft/TypeScript) 上。 其次引用[官网][TypeScript]的定义: From c64bae3f6b57cdcd0c110a2b6687ce5bea9a816a Mon Sep 17 00:00:00 2001 From: xcatliu Date: Wed, 1 Nov 2017 11:28:58 +0800 Subject: [PATCH 011/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=B0=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=9A=84=E7=B1=BB--=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=B8=AA=E4=BA=BA=E5=8C=96=E7=9A=84=E4=BE=8B?= =?UTF-8?q?=E5=AD=90=EF=BC=8C=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81=E9=A3=8E?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basics/any.md | 10 +- basics/primitive-data-types.md | 6 +- basics/type-inference.md | 5 +- basics/type-of-object-interfaces.md | 152 ++++++++++++++-------------- basics/union-types.md | 8 +- introduction/hello-typescript.md | 4 +- 6 files changed, 91 insertions(+), 94 deletions(-) diff --git a/basics/any.md b/basics/any.md index 85aaf15c..c5d06709 100644 --- a/basics/any.md +++ b/basics/any.md @@ -33,9 +33,9 @@ console.log(anyThing.myName.firstName); 也允许调用任何方法: ```ts -let anyThing: any = 'Xcat Liu'; -anyThing.setName('Jerry Lee'); -anyThing.setName('Jerry Lee').sayHello(); +let anyThing: any = 'Tom'; +anyThing.setName('Jerry'); +anyThing.setName('Jerry').sayHello(); anyThing.myName.setFirstName('Cat'); ``` @@ -50,7 +50,7 @@ let something; something = 'seven'; something = 7; -something.setName('Jerry Lee'); +something.setName('Tom'); ``` 等价于 @@ -60,7 +60,7 @@ let something: any; something = 'seven'; something = 7; -something.setName('Jerry Lee'); +something.setName('Tom'); ``` ## 参考 diff --git a/basics/primitive-data-types.md b/basics/primitive-data-types.md index 81814e80..b7d3e1a1 100644 --- a/basics/primitive-data-types.md +++ b/basics/primitive-data-types.md @@ -75,7 +75,7 @@ var infinityNumber = Infinity; 使用 `string` 定义字符串类型: ```ts -let myName: string = 'Xcat Liu'; +let myName: string = 'Tom'; let myAge: number = 25; // 模板字符串 @@ -86,7 +86,7 @@ I'll be ${myAge + 1} years old next month.`; 编译结果: ```js -var myName = 'Xcat Liu'; +var myName = 'Tom'; var myAge = 25; // 模板字符串 var sentence = "Hello, my name is " + myName + ".\nI'll be " + (myAge + 1) + " years old next month."; @@ -100,7 +100,7 @@ JavaScript 没有空值(Void)的概念,在 TypeScirpt 中,可以用 `voi ```ts function alertName(): void { - alert('My name is xcatliu'); + alert('My name is Tom'); } ``` diff --git a/basics/type-inference.md b/basics/type-inference.md index 51752e4f..babad780 100644 --- a/basics/type-inference.md +++ b/basics/type-inference.md @@ -24,7 +24,7 @@ myFavoriteNumber = 7; TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。 -**在TypeScript 2.1 之前,如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型而完全不被类型检查**: +**如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型而完全不被类型检查**: ```ts let myFavoriteNumber; @@ -32,12 +32,9 @@ myFavoriteNumber = 'seven'; myFavoriteNumber = 7; ``` -**TypeScript 2.1 中,编译器会考虑对 myFavoriteNumber 的最后一次赋值来检查类型**:[例](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#improved-any-inference) - ## 参考 - [Type Inference](http://www.typescriptlang.org/docs/handbook/type-inference.html)([中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Type%20Inference.html)) -- [TypeScript 2.1 Release Note](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html) --- diff --git a/basics/type-of-object-interfaces.md b/basics/type-of-object-interfaces.md index 956bc773..cbe88c16 100644 --- a/basics/type-of-object-interfaces.md +++ b/basics/type-of-object-interfaces.md @@ -12,30 +12,30 @@ TypeScript 中的接口是一个非常灵活的概念,除了可用于[对类 ```ts interface Person { - name: string; - age: number; + name: string; + age: number; } -let xcatliu: Person = { - name: 'Xcat Liu', - age: 25, +let tom: Person = { + name: 'Tom', + age: 25 }; ``` -上面的例子中,我们定义了一个接口 `Person`,接着定义了一个变量 `xcatliu`,它的类型是 `Person`。这样,我们就约束了 `xcatliu` 的形状必须和接口 `Person` 一致。 +上面的例子中,我们定义了一个接口 `Person`,接着定义了一个变量 `tom`,它的类型是 `Person`。这样,我们就约束了 `tom` 的形状必须和接口 `Person` 一致。 -接口一般首字母大写。 +接口一般首字母大写。[有的编程语言中会建议接口的名称加上 `I` 前缀](https://msdn.microsoft.com/en-us/library/8bc1fexb(v=vs.71).aspx)。 定义的变量比接口少了一些属性是不允许的: ```ts interface Person { - name: string; - age: number; + name: string; + age: number; } -let xcatliu: Person = { - name: 'Xcat Liu', +let tom: Person = { + name: 'Tom' }; // index.ts(6,5): error TS2322: Type '{ name: string; }' is not assignable to type 'Person'. @@ -46,18 +46,18 @@ let xcatliu: Person = { ```ts interface Person { - name: string; - age: number; + name: string; + age: number; } -let xcatliu: Person = { - name: 'Xcat Liu', - age: 25, - website: 'http://xcatliu.com', +let tom: Person = { + name: 'Tom', + age: 25, + gender: 'male' }; -// index.ts(9,3): error TS2322: Type '{ name: string; age: number; website: string; }' is not assignable to type 'Person'. -// Object literal may only specify known properties, and 'website' does not exist in type 'Person'. +// index.ts(9,5): error TS2322: Type '{ name: string; age: number; gender: string; }' is not assignable to type 'Person'. +// Object literal may only specify known properties, and 'gender' does not exist in type 'Person'. ``` 可见,**赋值的时候,变量的形状必须和接口的形状保持一致**。 @@ -68,24 +68,24 @@ let xcatliu: Person = { ```ts interface Person { - name: string; - age?: number; + name: string; + age?: number; } -let xcatliu: Person = { - name: 'Xcat Liu', +let tom: Person = { + name: 'Tom' }; ``` ```ts interface Person { - name: string; - age?: number; + name: string; + age?: number; } -let xcatliu: Person = { - name: 'Xcat Liu', - age: 25, +let tom: Person = { + name: 'Tom', + age: 25 }; ``` @@ -95,18 +95,18 @@ let xcatliu: Person = { ```ts interface Person { - name: string; - age?: number; + name: string; + age?: number; } -let xcatliu: Person = { - name: 'Xcat Liu', - age: 25, - website: 'http://xcatliu.com', +let tom: Person = { + name: 'Tom', + age: 25, + gender: 'male' }; -// examples/playground/index.ts(9,3): error TS2322: Type '{ name: string; age: number; website: string; }' is not assignable to type 'Person'. -// Object literal may only specify known properties, and 'website' does not exist in type 'Person'. +// examples/playground/index.ts(9,5): error TS2322: Type '{ name: string; age: number; gender: string; }' is not assignable to type 'Person'. +// Object literal may only specify known properties, and 'gender' does not exist in type 'Person'. ``` ## 任意属性 @@ -115,14 +115,14 @@ let xcatliu: Person = { ```ts interface Person { - name: string; - age?: number; - [propName: string]: any; + name: string; + age?: number; + [propName: string]: any; } -let xcatliu: Person = { - name: 'Xcat Liu', - website: 'http://xcatliu.com', +let tom: Person = { + name: 'Tom', + gender: 'male' }; ``` @@ -132,19 +132,19 @@ let xcatliu: Person = { ```ts interface Person { - name: string; - age?: number; - [propName: string]: string; + name: string; + age?: number; + [propName: string]: string; } -let xcatliu: Person = { - name: 'Xcat Liu', - age: 25, - website: 'http://xcatliu.com', +let tom: Person = { + name: 'Tom', + age: 25, + gender: 'male' }; -// index.ts(3,3): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'. -// index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; website: string; }' is not assignable to type 'Person'. +// index.ts(3,5): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'. +// index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; gender: string; }' is not assignable to type 'Person'. // Index signatures are incompatible. // Type 'string | number' is not assignable to type 'string'. // Type 'number' is not assignable to type 'string'. @@ -152,7 +152,7 @@ let xcatliu: Person = { 上例中,任意属性的值允许是 `string`,但是可选属性 `age` 的值却是 `number`,`number` 不是 `string` 的子属性,所以报错了。 -另外,在报错信息中可以看出,此时 `{ name: 'Xcat Liu', age: 25, website: 'http://xcatliu.com' }` 的类型被推断成了 `{ [x: string]: string | number; name: string; age: number; website: string; }`,这是联合类型和接口的结合。 +另外,在报错信息中可以看出,此时 `{ name: 'Tom', age: 25, gender: 'male' }` 的类型被推断成了 `{ [x: string]: string | number; name: string; age: number; gender: string; }`,这是联合类型和接口的结合。 ## 只读属性 @@ -160,50 +160,50 @@ let xcatliu: Person = { ```ts interface Person { - readonly id: number; - name: string; - age?: number; - [propName: string]: any; + readonly id: number; + name: string; + age?: number; + [propName: string]: any; } -let xcatliu: Person = { - id: 89757, - name: 'Xcat Liu', - website: 'http://xcatliu.com', +let tom: Person = { + id: 89757, + name: 'Tom', + gender: 'male' }; -xcatliu.id = 9527; +tom.id = 9527; -// index.ts(14,9): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property. +// index.ts(14,5): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property. ``` 上例中,使用 `readonly` 定义的属性 `id` 初始化后,又被赋值了,所以报错了。 -**只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候**: +**注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候**: ```ts interface Person { - readonly id: number; - name: string; - age?: number; - [propName: string]: any; + readonly id: number; + name: string; + age?: number; + [propName: string]: any; } -let xcatliu: Person = { - name: 'Xcat Liu', - website: 'http://xcatliu.com', +let tom: Person = { + name: 'Tom', + gender: 'male' }; -xcatliu.id = 89757; +tom.id = 89757; -// index.ts(8,5): error TS2322: Type '{ name: string; website: string; }' is not assignable to type 'Person'. -// Property 'id' is missing in type '{ name: string; website: string; }'. -// index.ts(13,9): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property. +// index.ts(8,5): error TS2322: Type '{ name: string; gender: string; }' is not assignable to type 'Person'. +// Property 'id' is missing in type '{ name: string; gender: string; }'. +// index.ts(13,5): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property. ``` -上例中,报错信息有两处,第一处是在对 `xcatliu` 进行赋值的时候,没有给 `id` 赋值。 +上例中,报错信息有两处,第一处是在对 `tom` 进行赋值的时候,没有给 `id` 赋值。 -第二处是在给 `xcatliu.id` 赋值的时候,由于它是只读属性,所以报错了。 +第二处是在给 `tom.id` 赋值的时候,由于它是只读属性,所以报错了。 ## 参考 diff --git a/basics/union-types.md b/basics/union-types.md index df3c8443..634346ed 100644 --- a/basics/union-types.md +++ b/basics/union-types.md @@ -20,7 +20,7 @@ myFavoriteNumber = true; 联合类型使用 `|` 分隔每个类型。 -这里的 `string | number` 的含义是,允许 `myFavoriteNumber` 的类型是 `string` 或者 `number`,但是不能是其他类型。 +这里的 `let myFavoriteNumber: string | number` 的含义是,允许 `myFavoriteNumber` 的类型是 `string` 或者 `number`,但是不能是其他类型。 ## 访问联合类型的属性或方法 @@ -28,10 +28,10 @@ myFavoriteNumber = true; ```ts function getLength(something: string | number): number { - return something.length; + return something.length; } -// index.ts(2,20): error TS2339: Property 'length' does not exist on type 'string | number'. +// index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. ``` @@ -41,7 +41,7 @@ function getLength(something: string | number): number { ```ts function getString(something: string | number): string { - return something.toString(); + return something.toString(); } ``` diff --git a/introduction/hello-typescript.md b/introduction/hello-typescript.md index b9ea9b40..a95e9144 100644 --- a/introduction/hello-typescript.md +++ b/introduction/hello-typescript.md @@ -9,7 +9,7 @@ function sayHello(person: string) { return 'Hello, ' + person; } -let user = 'Xcat Liu'; +let user = 'Tom'; console.log(sayHello(user)); ``` @@ -25,7 +25,7 @@ tsc hello.ts function sayHello(person) { return 'Hello, ' + person; } -var user = 'Xcat Liu'; +var user = 'Tom'; console.log(sayHello(user)); ``` From 3395b8fb179ec1323cd32bb7f20fc6af1a501bf3 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Wed, 1 Nov 2017 20:02:12 +0800 Subject: [PATCH 012/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=B0=E5=86=85?= =?UTF-8?q?=E7=BD=AE=E5=AF=B9=E8=B1=A1=EF=BC=8C=E5=8E=BB=E6=8E=89=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E5=8C=96=E7=9A=84=E4=BE=8B=E5=AD=90=EF=BC=8C=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basics/type-assertion.md | 40 ++++++++------- basics/type-of-array.md | 14 +++-- basics/type-of-function.md | 102 +++++++++++++++++++------------------ 3 files changed, 82 insertions(+), 74 deletions(-) diff --git a/basics/type-assertion.md b/basics/type-assertion.md index baea93c1..4d88b84f 100644 --- a/basics/type-assertion.md +++ b/basics/type-assertion.md @@ -1,29 +1,31 @@ # 类型断言 -类型断言(Type Assertion)可以用来绕过编译器的类型推断,手动指定一个值的类型(即程序员对编译器**断言**)。 +类型断言(Type Assertion)可以用来手动指定一个值的类型。 ## 语法 ```ts <类型>值 +``` -// 或 +或 +```ts 值 as 类型 - -// 在TSX语法 (React的JSX语法的TS版)中必须用后一种 ``` +在 tsx 语法(React 的 jsx 语法的 ts 版)中必须用后一种。 + ## 例子:将一个联合类型的变量指定为一个更加具体的类型 [之前提到过](union-types.md#访问联合类型的属性或方法),当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们**只能访问此联合类型的所有类型里共有的属性或方法**: ```ts function getLength(something: string | number): number { - return something.length; + return something.length; } -// index.ts(2,20): error TS2339: Property 'length' does not exist on type 'string | number'. +// index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. ``` @@ -31,16 +33,16 @@ function getLength(something: string | number): number { ```ts function getLength(something: string | number): number { - if (something.length) { - return something.length; - } else { - return something.toString().length; - } + if (something.length) { + return something.length; + } else { + return something.toString().length; + } } -// index.ts(2,17): error TS2339: Property 'length' does not exist on type 'string | number'. +// index.ts(2,19): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. -// index.ts(3,22): error TS2339: Property 'length' does not exist on type 'string | number'. +// index.ts(3,26): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. ``` @@ -50,11 +52,11 @@ function getLength(something: string | number): number { ```ts function getLength(something: string | number): number { - if ((something).length) { - return (something).length; - } else { - return something.toString().length; - } + if ((something).length) { + return (something).length; + } else { + return something.toString().length; + } } ``` @@ -64,7 +66,7 @@ function getLength(something: string | number): number { ```ts function toBoolean(something: string | number): boolean { - return something; + return something; } // index.ts(2,10): error TS2352: Type 'string | number' cannot be converted to type 'boolean'. diff --git a/basics/type-of-array.md b/basics/type-of-array.md index 01a135e2..c984eef7 100644 --- a/basics/type-of-array.md +++ b/basics/type-of-array.md @@ -20,7 +20,9 @@ let fibonacci: number[] = [1, '1', 2, 3, 5]; // Type 'string' is not assignable to type 'number'. ``` -此时 `[1, '1', 2, 3, 5]` 的类型被推断为 `(number | string)[]`,这是联合类型和数组的结合。 +上例中,`[1, '1', 2, 3, 5]` 的类型被推断为 `(number | string)[]`,这是联合类型和数组的结合。 + +数组的一些方法的参数也会根据数组在定义时约定的类型进行限制: ```ts let fibonacci: number[] = [1, 1, 2, 3, 5]; @@ -29,9 +31,11 @@ fibonacci.push('8'); // index.ts(2,16): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. ``` +上例中,`push` 方法只允许传入 `number` 类型的参数,但是却传了一个 `string` 类型的参数,所以报错了。 + ## 数组泛型 -也可以使用数组泛型(Generic) `Array` 来表示数组: +也可以使用数组泛型(Array Generic) `Array` 来表示数组: ```ts let fibonacci: Array = [1, 1, 2, 3, 5]; @@ -45,7 +49,7 @@ let fibonacci: Array = [1, 1, 2, 3, 5]; ```ts interface NumberArray { - [index: number]: number; + [index: number]: number; } let fibonacci: NumberArray = [1, 1, 2, 3, 5]; ``` @@ -66,7 +70,7 @@ let list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }]; ```ts function sum() { - let args: number[] = arguments; + let args: number[] = arguments; } // index.ts(2,7): error TS2322: Type 'IArguments' is not assignable to type 'number[]'. @@ -77,7 +81,7 @@ function sum() { ```ts function sum() { - let args: IArguments = arguments; + let args: IArguments = arguments; } ``` diff --git a/basics/type-of-function.md b/basics/type-of-function.md index daf86309..8ec6f39a 100644 --- a/basics/type-of-function.md +++ b/basics/type-of-function.md @@ -9,12 +9,12 @@ ```js // 函数声明(Function Declaration) function sum(x, y) { - return x + y; + return x + y; } // 函数表达式(Function Expression) let mySum = function (x, y) { - return x + y; + return x + y; }; ``` @@ -22,7 +22,7 @@ let mySum = function (x, y) { ```ts function sum(x: number, y: number): number { - return x + y; + return x + y; } ``` @@ -30,7 +30,7 @@ function sum(x: number, y: number): number { ```ts function sum(x: number, y: number): number { - return x + y; + return x + y; } sum(1, 2, 3); @@ -39,7 +39,7 @@ sum(1, 2, 3); ```ts function sum(x: number, y: number): number { - return x + y; + return x + y; } sum(1); @@ -52,7 +52,7 @@ sum(1); ```ts let mySum = function (x: number, y: number): number { - return x + y; + return x + y; }; ``` @@ -60,26 +60,28 @@ let mySum = function (x: number, y: number): number { ```ts let mySum: (x: number, y: number) => number = function (x: number, y: number): number { - return x + y; + return x + y; }; ``` +注意不要混淆了 TypeScript 中的 `=>` 和 ES6 中的 `=>`。 + 在 TypeScript 的类型定义中,`=>` 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。 -其中,`=>` 在 ES6 中叫箭头函数,应用十分广泛,可以参考 [ES6 中的箭头函数][]。 +在 ES6 中,`=>` 叫做箭头函数,应用十分广泛,可以参考 [ES6 中的箭头函数][]。 -## 接口中函数的定义 +## 用接口定义函数的形状 我们也可以使用接口的方式来定义一个函数需要符合的形状: ```ts interface SearchFunc { - (source: string, subString: string): boolean; + (source: string, subString: string): boolean; } let mySearch: SearchFunc; mySearch = function(source: string, subString: string) { - return source.search(subString) !== -1; + return source.search(subString) !== -1; } ``` @@ -91,52 +93,52 @@ mySearch = function(source: string, subString: string) { ```ts function buildName(firstName: string, lastName?: string) { - if (lastName) { - return firstName + ' ' + lastName; - } else { - return firstName; - } + if (lastName) { + return firstName + ' ' + lastName; + } else { + return firstName; + } } -let xcatliu = buildName('Xcat', 'Liu'); -let xcat = buildName('Xcat'); +let tomcat = buildName('Tom', 'Cat'); +let tom = buildName('Tom'); ``` 需要注意的是,可选参数必须接在必需参数后面。换句话说,**可选参数后面不允许再出现必须参数了**: ```ts function buildName(firstName?: string, lastName: string) { - if (firstName) { - return firstName + ' ' + lastName; - } else { - return lastName; - } + if (firstName) { + return firstName + ' ' + lastName; + } else { + return lastName; + } } -let xcatliu = buildName('Xcat', 'Liu'); -let xcat = buildName(undefined, 'Xcat'); +let tomcat = buildName('Tom', 'Cat'); +let tom = buildName(undefined, 'Tom'); // index.ts(1,40): error TS1016: A required parameter cannot follow an optional parameter. ``` ## 参数默认值 -在 ES6 中,我们允许给函数的参数添加默认值,TypeScript 会将**添加了默认值的参数识别为可选参数**: +在 ES6 中,我们允许给函数的参数添加默认值,**TypeScript 会将添加了默认值的参数识别为可选参数**: ```ts -function buildName(firstName: string, lastName: string = 'Liu') { - return firstName + ' ' + lastName; +function buildName(firstName: string, lastName: string = 'Cat') { + return firstName + ' ' + lastName; } -let xcatliu = buildName('Xcat', 'Liu'); -let xcat = buildName('Xcat'); +let tomcat = buildName('Tom', 'Cat'); +let tom = buildName('Tom'); ``` 此时就不受「可选参数必须接在必需参数后面」的限制了: ```ts -function buildName(firstName: string = 'Xcat', lastName: string) { - return firstName + ' ' + lastName; +function buildName(firstName: string = 'Tom', lastName: string) { + return firstName + ' ' + lastName; } -let xcatliu = buildName('Xcat', 'Liu'); -let xcat = buildName(undefined, 'Xcat'); +let tomcat = buildName('Tom', 'Cat'); +let cat = buildName(undefined, 'Cat'); ``` > 关于默认参数,可以参考 [ES6 中函数参数的默认值][]。 @@ -147,9 +149,9 @@ ES6 中,可以使用 `...rest` 的方式获取函数中的剩余参数(rest ```js function push(array, ...items) { - items.forEach(function(item) { - array.push(item); - }); + items.forEach(function(item) { + array.push(item); + }); } let a = []; @@ -160,9 +162,9 @@ push(a, 1, 2, 3); ```ts function push(array: any[], ...items: any[]) { - items.forEach(function(item) { - array.push(item); - }); + items.forEach(function(item) { + array.push(item); + }); } let a = []; @@ -181,11 +183,11 @@ push(a, 1, 2, 3); ```ts function reverse(x: number | string): number | string { - if (typeof x === 'number') { - return Number(x.toString().split('').reverse().join('')); - } else if (typeof x === 'string') { - return x.split('').reverse().join(''); - } + if (typeof x === 'number') { + return Number(x.toString().split('').reverse().join('')); + } else if (typeof x === 'string') { + return x.split('').reverse().join(''); + } } ``` @@ -197,11 +199,11 @@ function reverse(x: number | string): number | string { function reverse(x: number): number; function reverse(x: string): string; function reverse(x: number | string): number | string { - if (typeof x === 'number') { - return Number(x.toString().split('').reverse().join('')); - } else if (typeof x === 'string') { - return x.split('').reverse().join(''); - } + if (typeof x === 'number') { + return Number(x.toString().split('').reverse().join('')); + } else if (typeof x === 'string') { + return x.split('').reverse().join(''); + } } ``` From 09d95b89085a8bf882aa09e4dcaa736db7013275 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Thu, 2 Nov 2017 20:14:10 +0800 Subject: [PATCH 013/210] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8D=89=E7=A8=BF=20?= =?UTF-8?q?TypeScript=20=E4=B8=8E=20ESLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drafts/eslint.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 drafts/eslint.md diff --git a/drafts/eslint.md b/drafts/eslint.md new file mode 100644 index 00000000..9ea67c94 --- /dev/null +++ b/drafts/eslint.md @@ -0,0 +1,19 @@ +# TypeScript 与 ESLint + +ESLint + +运行 eslint 时报错 Cannot find module 'typescript-eslint-parser' + +你运行的是全局的 eslint,需要运行 `./node_modules/.bin/eslint xxx.ts' + +不支持某些 规则,比如 no-undef + +有冲突的规则,比如 spaced-comment + + +cannot read property type of null + +react 规则不可用 + + +react/sort-comp type-annotations \ No newline at end of file From 37828d29ebcd20195ddfbbd6fad93aeb0ef82f30 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Fri, 3 Nov 2017 13:40:46 +0800 Subject: [PATCH 014/210] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=9F=E6=80=81?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=83=A8=E5=88=86=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20typescript=20=E5=92=8C=20eslint=20=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 2 ++ assets/typescript-eslint.png | Bin 0 -> 66258 bytes basics/built-in-objects.md | 2 +- basics/declaration-files.md | 2 +- drafts/README.md | 0 drafts/eslint.md | 19 ------------- ecosystem/README.md | 7 +++++ ecosystem/eslint.md | 47 +++++++++++++++++++++++++++++++ introduction/get-typescript.md | 8 ++++-- introduction/hello-typescript.md | 4 +-- 10 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 assets/typescript-eslint.png create mode 100644 drafts/README.md delete mode 100644 drafts/eslint.md create mode 100644 ecosystem/README.md create mode 100644 ecosystem/eslint.md diff --git a/SUMMARY.md b/SUMMARY.md index 661acd94..99637113 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -26,4 +26,6 @@ - [泛型](advanced/generics.md) - [声明合并](advanced/declaration-merging.md) - [扩展阅读](advanced/further-reading.md) +- [生态系统](ecosystem/README.md) + - [TypeScript 与 ESLint](ecosystem/eslint.md) - [感谢](thanks/README.md) diff --git a/assets/typescript-eslint.png b/assets/typescript-eslint.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa793a64caaca8d2a3034ad282f7e910eef2b65 GIT binary patch literal 66258 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 NmztuGo{{A3{U26aSvUXy literal 0 HcmV?d00001 diff --git a/basics/built-in-objects.md b/basics/built-in-objects.md index 37e43017..6005f38f 100644 --- a/basics/built-in-objects.md +++ b/basics/built-in-objects.md @@ -92,7 +92,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven Node.js 不是内置对象的一部分,如果想用 TypeScript 写 Node.js,则需要引入第三方声明文件: -```shell +```bash npm install @types/node --save-dev ``` diff --git a/basics/declaration-files.md b/basics/declaration-files.md index 139226fc..e2281575 100644 --- a/basics/declaration-files.md +++ b/basics/declaration-files.md @@ -66,7 +66,7 @@ jQuery('#foo'); @types 的使用方式很简单,直接用 npm 安装对应的声明模块即可,以 jQuery 举例: -```shell +```bash npm install @types/jquery --save-dev ``` diff --git a/drafts/README.md b/drafts/README.md new file mode 100644 index 00000000..e69de29b diff --git a/drafts/eslint.md b/drafts/eslint.md deleted file mode 100644 index 9ea67c94..00000000 --- a/drafts/eslint.md +++ /dev/null @@ -1,19 +0,0 @@ -# TypeScript 与 ESLint - -ESLint - -运行 eslint 时报错 Cannot find module 'typescript-eslint-parser' - -你运行的是全局的 eslint,需要运行 `./node_modules/.bin/eslint xxx.ts' - -不支持某些 规则,比如 no-undef - -有冲突的规则,比如 spaced-comment - - -cannot read property type of null - -react 规则不可用 - - -react/sort-comp type-annotations \ No newline at end of file diff --git a/ecosystem/README.md b/ecosystem/README.md new file mode 100644 index 00000000..57a7f97b --- /dev/null +++ b/ecosystem/README.md @@ -0,0 +1,7 @@ +# 生态系统 + +TypeScript 自发布以来一直都在稳步发展,其中开源社区也贡献了非常大的力量,如今它已有了繁荣的生态系统。 + +本部分主要会介绍 TypeScript 与其他前端技术的结合,具体内容包括: + +- [TypeScript 与 ESLint](eslint.md) diff --git a/ecosystem/eslint.md b/ecosystem/eslint.md new file mode 100644 index 00000000..3ae4d2e3 --- /dev/null +++ b/ecosystem/eslint.md @@ -0,0 +1,47 @@ +# TypeScript 与 ESLint(草稿) + +[ESLint][] 是一个代码检查工具,主要用来发现代码错误、统一代码风格,目前已被广泛的应用于各种 JavaScript 项目中。 + +它通过插件化的特性极大的丰富了适用范围,搭配 [`typescript-eslint-parser`][] 之后,甚至可以用来检查 TypeScript 代码。 + +## 为什么需要 ESLint + +TypeScript 已经可以对代码进行静态检查了,那么为什么还需要 ESLint 呢? + +其实 ESLint + +![TypeScript 和 ESLint 的关系](../assets/typescript-eslint.png) + + +下面我们来一步一步给我们的 TypeScript 项目添加 ESLint 检查。 + +## 安装 + +首先,我们需要安装 ESLint 和一些插件: + +```bash +npm install -g eslint +``` + +关于 TypeScript 与 ESLint,有过一些争论: + +- 使用 ESLint 加上 + +运行 eslint 时报错 Cannot find module 'typescript-eslint-parser' + +你运行的是全局的 eslint,需要运行 `./node_modules/.bin/eslint xxx.ts' + +不支持某些 规则,比如 no-undef + +有冲突的规则,比如 spaced-comment + + +cannot read property type of null + +react 规则不可用 + + +react/sort-comp type-annotations + +[ESLint]: https://eslint.org/ +[`typescript-eslint-parser`]: https://github.com/eslint/typescript-eslint-parser \ No newline at end of file diff --git a/introduction/get-typescript.md b/introduction/get-typescript.md index 80f50fa7..851bead1 100644 --- a/introduction/get-typescript.md +++ b/introduction/get-typescript.md @@ -2,13 +2,15 @@ TypeScript 的命令行工具安装方法如下: -```shell +```bash npm install -g typescript ``` -安装完成之后,就有了 `tsc` 命令。编译一个 TypeScript 文件很简单: +以上命令会在全局环境下安装 `tsc` 命令,安装完成之后,我们就可以在任何地方执行 `tsc` 命令了。 -```shell +编译一个 TypeScript 文件很简单: + +```bash tsc hello.ts ``` diff --git a/introduction/hello-typescript.md b/introduction/hello-typescript.md index a95e9144..65caba45 100644 --- a/introduction/hello-typescript.md +++ b/introduction/hello-typescript.md @@ -15,7 +15,7 @@ console.log(sayHello(user)); 然后执行 -```shell +```bash tsc hello.ts ``` @@ -50,7 +50,7 @@ console.log(sayHello(user)); 编辑器中会提示错误,编译的时候也会出错: -```shell +```bash index.ts(6,22): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'. ``` From 0ed59fa985f741eeaad0c31d69165af179e8e6d4 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Fri, 3 Nov 2017 16:05:42 +0800 Subject: [PATCH 015/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20TypeScript=20?= =?UTF-8?q?=E4=B8=8E=20ESLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/typescript-eslint.png | Bin 66258 -> 66578 bytes ecosystem/eslint.md | 53 +++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/assets/typescript-eslint.png b/assets/typescript-eslint.png index 8aa793a64caaca8d2a3034ad282f7e910eef2b65..14db5ced5265bd86d3fcb6e4a183063ff55ee38c 100644 GIT binary patch delta 50002 zcmXtg1yoeu*Y?oeNJ}H#E!|yG(j`cPbb0}$ySqV3LH;`_wsa&vQi zIk|XieDjOuX;YQCo4Dd*Ofb$#^JH|e#l^*!5v6wQU0mXW5m2J+F zarGyw(1XQL8atPuU>}aeZ9(D;2{JOW&*_NZ@qSG^Ef*JVe&B^c>|w36v<$Oxsb60I zfR@=d^gzdrPo+`FEF*KB(*mnJM$edy8wt=C^ONThZq<#53p zy^lbZ@&W(jY1XWR8-`WP<85Xp#pDdB$5E^1Frh|9hJ1F)rVcm`r8aI;w*FK3N1?L| zX?>i=@8NPab&(hmx(?7I63gcbRzB4wl`w7dcv$vM^^%oGm$qkd+8-vBy1KtfTD=^7 zD#cWF{$shty1fj6Lexj|=;DIt@p3mdHX>~LKAE&2y12OfSX{h`n48_qdhZ`G*s-{{ z__Sl~`h4H&>S(=a0iTR4YH7*%Y;QVxO#PRuvc*UizoH_fD0%sJng4C;!u))p|K(pH z_btpgO0g)dVtG4{2YXqC=TSx~c}qoNj!!KX;n zxiR>L+KfHpoM>|2z~kX(s7Ye^`}eFdFdP5FY)x6hOs+^uzj3?xpLYyOyokXEU%wR2 zYH6K4=hn&;fw~oyXvW4x4q;Zk32mu8WAQBe9x>}(;lFFz?>qmUZhx^EA!9S3RiD}$ z5nS!w8p%GsI{y8*n15$$%;Ir-aN~r0e0`A~mn~b+g-9)x_nCSQ)8miZWBJ63gxCuE zLePEd+Mhq{XMdNC`pshz_=lU^w;!LE#bgPjRCLfD5lxJ=ezG~as-jNxzS^k5u83OG zy+DCXlO~#utW}Cz(Lp(K^BHlWa)7*H=$0OsLIdB z*9{h^MsmdwZiSyFgLT#r~U$dn#h@oj%0UfuzO#if0}Lrn=(u8*73f<8Zkpd}qgYZf>q4 zS`C`YhKX-=?WFjIWn4~<2Fjb72R6itQS(dA-D-tF8 zq)V9j!Q23XBb1YqQ`eb{p-Iqke|LkhW(v`&k8oLZBJw%RUOU-{g_L#ywUby{Mcdam2h^OxzIW#QE0`wH>4YqaD@nmOnD74L=U z-#=fvzpXuKBVdHeTbvi`UkOT%EGx^<7V`X_+?h+1ou97STMm5p4vrnQ$92m0_!p9Z z^AalTY9m?0T;~>gA&ZPj5@gciwZ1WsoFN|AJh$a~hDk?97jV5>mLcr^47@r5++SCB zw`{RMV`F1SR~N$i`uaua>@Wfue*yA(h$6Th8)bTY=*>+8VNzCB)ZE<5mqtd#SlL3= zXfd(D1=Q!($H(-T;@7B5PLBQKg;R?gr(?k;Ew+S`z7(R0zw8I_vyx0qjqY}A3lwm& zX0SB-j9$N9n7uxyAMcH0_+n)v|BmhM&d#JMhw{S*`i`wp-Bqtzn~vVtpklfaZ603j z!^!LfNk{;m&&hv?h>WfSFLk-an~t3w3*4C8&BdP{0R=2ULBW>>1~dW!L}2TG{&`|i zM6p~PcyqC{@QszjxG@O)2661nI6a+0oGe&fM5zokF?`w9gYUSYy%58^+1c6O9L#Z( zq;J}d!>B$L~?Kt(T*RK&IqxWZP`fR6y z$fOnUwfQ;+an{pa4lgfn&T~)YDz_Y=Ync}> z@a1Dj;38#1z>6JPS+0M)Lm`oB%8&nATl>_?((;7QUJ|RrJpzJFRq4BwP@`f!Vx49Z z_#kpYXKF@96sLu{iH{^nL(CrEUgKt8Yql_etXStB|zwz0&WoYv$A(>Y202DYDwlYN{||;mWg!@$KITwp}aHP*6}}NVwtsFAk(6C1G0*S7Ft5 zKR+BDAOHB~FiZA$oAg2HOq?_7SEN+tkrsxDs#q{$h|~13i_Z5%rz8YCh=a-z85@dy2ER|cndG}lAJYcz&QB1E!&o5!}XGPLSjr^p@DG~3<6vwS|C3WPt54kLTF!Oyqd<(O; zN;irs2pnd5Tf%Q-tpUpJ9~tRMppmIt5b55T`$G2?Y;5E9wg>)vz@J#GtgNrBtv$gxXG=gyNm-$VP?>3XNW;U&mjkEC^G%@p8nh$V z?a`+IeH3~6ZthISwzPnK%M@vtDO460i56O??EkPcF-edVPr;nIVLT%c@-F!9X1A?S zM(O>N2gd->$geaqY}7RMws^jEhTq^X z{?HxHLJwM9eZ#|(?Gg%B0B@Vmelme+dPN>Ldk#`?1)U6{`#*`4$`)`kH#ZLw@%~HA zsj;oiDrAT$^33bcLg><0zv^jRd3kvfQy)|7*%u}s^!y{1mY4TYL%5V^p~TM{ToaKo zF|txpa7#-|d@HUhu{*Zc2CXO2;0(81KcC$_|J@f<%5XF$5fqChrlX`(XetL_M~K{$ z>DgFvgj$=#z9`SuxF}kUgf=m>;;wKwcX#Wgi$a-{%Q_!!-vXHVjn|+rk01(}KneXD zUS25I6k&{XH(CMN&)4O;SWe z#P$ll20eIw;f1%; zv=`dX4-?I9kg#v94ymBJu*k>{DT7?SoV%L==Qvx`kRWi%!xel%V(_`msC*KRtsABU zaJz7oI$}RTqaA_oll`f}0PY~f<084iS=ch>M?<-gCa(M%#DD+jJ8>vWmRerK>EqzU z7j@fnL%`7|IQG-1p>)n#2Nq)4<}g6IWu$PgvokUZP%vsEVx$YlDRJ<^i;)gE z2^RoHV)LE7S@!ODheEHa)1%?YcAgDAcY81To|IIFpD7idQ3IZsLlcKpsz7tmp+<{= zPBJ9C+AOD4bWq!2HSZ*u#WwOs+H|!m>g&-$W%QIX zP9mTjZPci3!y_ZnTiA98+}wOrHB-uD*kwdCsPJ)wqob_f;Opct*5-N9y|Kt-g`MW- zb=0ngIP2m76X`c<_+bA-#M@SrTT*F)lyu6};?8gL8XrwlR3EK?WgvrOQ}w&@FVG9x z@2@eu4_6?$_FpEG!a4R^)eS41iF69M`1m2r+8=EBR2Qp_1T(U;=@=Qy(!oXDfm1w* zzy8#|NDrMB=7Ny$NavR(FD$vFHh%r0{mMWQ*SOT?Pkec}8s63xxQm2bSUC8Ft4be1 zTzqQMVnuZGd2cTtfkt6L<(G#Wi6DLvEbI>nP`16n-DocTSLK!n3SsGDTbAUQ8hCQa zp*Sb(vS)9+y%mb(V_gqd#Jan?Z9QOL0f_WF-wOpLtSmV@=SjBc%df>MV*|Dq+>~*E zA)I@ayHt0@9|~4g`@gI0(5`nA*wlA7KTjK0it?n=()dh22$2iG)UsK6a5Z^u8K7i1 zDXGDuELC|*#!zWt;&@M42rZ)_9fLOR8NdNMW{6V9P2-o{>LP3*HVjiafRCF7ljINvC)I2GazS3rQzfvGIm5xsRW4a87!9pWn z9S1!9dk(cMzThukxWNbUugGO+i&*pxAOG&7K@E|=T&~b&eEISvOme%^p;}#QU)ttH z#o1FBfYI@KF?;6SJw0$Rz%hFs=x76qv7}medns)7fB!HS(e*7T(Zh03z zQ(Zi|#rrxbp~($tt|fizNG(&^`lPbYuUMY11-sy!5PdU71n3%dI8vGq2P&54<}gM^ zMp-#I8V(L@fL1F`>V-mYFRA#gte1P--IyxA*FB^fDuQ!pqVbKDXuuV2Vq&7JyZg_% z@3Ap4;|(rm6wf^(AQJ~@d~UQV*l?Rh+5)+?K6J>^$_no2y*>6eAh)m`5_W#$dUH4i z!NWPJqH<>wLuY4fOmgIa8+NqZ-Ji_y<+M`T#+clgSY}F?+&*(3$%OsWqzmNbJCYge z*q9>H5T?8=HkHrEKANgMuvP|~Vtq4V8a>&REEx=#Z1ZP^j16yvVSup(R^*B6F8rt@ z*QILl*1x;a1K9n=2E+3=zuwDVV(oZ+GpIhn1tsv;GgNxr+Q}&vV2ennII_sdNLYW* z==zk+XubpvY-hf|{s`r75d_K$ipEGLe1VwVRHa8SSxvQ&V-% zFMbaW)5pi7{(d>fJref@n`vskOk@7AuSW}qSzyf=7tMJouZ4L96bxWx38ZJ(?>bW2nc3QPA=) zTQE3Y;?q(XF-M7UkwNXCsRG1NmgJ9sur_NpAo8OXOCx_$uKp@^YHzwOZ*Ohh<$EE9 z>-rUX6Whe>FZA%Q z|7msJ>YHix$NK)7AK&STW}e#GlJ7KNVOanDSG~!$a!i+0^kvhX|K${<(EsXH!mKi4 z$qVM^-hX4p$2E-`UEx5}o7}nAMV!!dl`08*6!$nJBv$*DmMHS_@_-Bm|Ci>MYY5gN?nd*WxEfVsZZM8?z5ZEattaB4i&e&4QfT= zeGQ)2y9salf4Qv*f#1XwrlZ4eWjib@2)bYS_iu2FoIIJ@ur2HD z-z6nz?EY@oxjB;i9pn^N#&|UUy5?%Ak}OxmJ4}}L$KwrU zsv=uiSpkUB-;etAxktzD&oT>hb1vKtuh>7gPs;ffKFHD@BeA^MW`+mKm?jh9=i1ue zj4JBYn?R!X0fON|o!z_Z%H)k~J{qmgx%yZR*~)b^c{iS;9^xm5!*eg&R6LzO`3XV8 zv&1C)Q5+ur7qDzW)>Z#ZSJijOTzq`*V`H&^7@e4whKw?^UoJpEp<2j3JxjpIl3yh- zf{Fbhr^xQ-j^_(}U)#4gv6Yzl5{w#Z=G3|#U(OBaMoQ?{fHPGSAB}Oxsg|ppZ?}-* zr)6!EM6wSy%5NNMZmqWKqx(SfA&4kw^V?Hl>By-d9^u=nntqv5hS>}NZ;N%S^cp?) ziJVtj(GDl&C#R@^EZ74c15K)O;18t4i=&H07jl3KFcTE%A9b&}trTho1|%3x`Wt(} z^-xOEny5;*&dwcpeTt@>R@hjcu5-9!7^!3-R%Q%kZ*PimcCySbduX1=nnwVmT}Oa| z02c6Q$qtN~)ZxV&wa7h>%V^&t~h3GGFBT`Z1PG*^Z$hj0WdrX<6C#Od+T+LiCA%;b2(g0)+GU*b1T<)GS#hUb{&ro&5;| zJ4O9}M@emLQry2f5QlzubleH?IHon>ySp7+ZE6x0gZ{3TVbAc8hD!IwmAaDtzWtYu z(MK3I?TF49Wnf^Sdo{8{T39$m2k>svVQ45^;0=qri?oaqJ@?`G@4ghrr$q7)v6&fu z_4a6D$G>f=N?EHW(ZWIip9g2f{3or>?MqQ2t54V9T-V_vS+=U-%WIqV9*ka+{OOuX z@gv}d)^86;8O#KojoaF5^gEW9p8}~#t}pG`m)hEQwY9te3{-1#La*#45W<~NWE=1E+bNfQlrn0+CA0TiA!{puI!Hi^efw_@Sp;gAgO z`$_WL8ETVe4=G1SHbki-V0$bC3vA=SNqTt+zyNvumVR~R1Jr=7A3qBFvtM*4GkR?Q z*^;MBC*`$uyX%cDP5&_l8rxi%#=wxrJ`w)~!j5#klhH0Qo0(Z9iHL8~#YA!V^^Ji6 zC-JK>^GXpr zTXKPz_x;ht^rEq`yDr@B&-mRw8tF586cz0}{8-6jnZTy{(C+_M{Ae@%OqBk8XCXLS z3ctQb#21Wd70t@-Lwxa)L>Kq^3I^RPp{YH3-7w|(vGY+91`4GWxqQ(n$X zjc}4ZB8Umw)Iu2?uP}%wdn%0tPZn~X%T0?6r6+qMQy+GgstgX65-|3Q=wzD82@4bQ z3=9?_?sig2+ke&^7=qqgpz$bK7UnWq-$~p`A_Rg8*&883!Fh%=E%A^*qUS_uZ?Bv; zq>`?f5y=)t0uDDtb@kp@azQ?h2vISy=)uFb)>g-RAi8-#v1CU{wtZ$Fk(t^4$pAKA zXP;5UvLpjI%+mKja@aUn$Yvo*3H1@|!(}=R&Hb6Z^_nNFOaa_pY$G+#1IZfS=9+RE z$(v@;DNJSGr1mbiYy|pUnw%g~JeL)wcWGB6UMA*D*+)kC=@V8cvwJ+m$G=7XhCcU9sm6ujzx+70G?gN%R$sp-U8+Q|`TYC$J*3yuKhr%4 zEV&}duft5b^qY6JxD>!^u$a38{ zBl!sd0iCiXf6E1U`)bbiSqCXXV&Yl#?4duTW9T;@03nNTL<=wWot&IJ0`>^7*1DoR z89CzYcm3b6?5#2+reOAAl4yQ`ES^214}+oil^2n{7342f5dLg+V_@x1|3+x~J%H~Y ztE&?;Gb8Kj_+rg4$ocKxgX5i!gX5DFuunu_`T)?Y6wHPw;=a#=y~NaZ7~ssAD6SS( zUx?AL8>lID1tfs1zT`yI=Llw0@A!x;Vu48WV{VQF8yoxOXY*j_x<5+))yc-d(aA|? ztM6&0Q#OCFVWX;sMW5IAJy8y91sUKUt{t{N$U8cIWEu^|e)^mm5WW!VGZ?Y#FX}|a zX4H^^)GlM)#Gy@CBXuP@hE5+R?CA9LU2!oTP#NixnMyS#LiL9NSU4MVS&*mS;g*vo&O0iCS0hP)ui;#$>3x^n^hQUj|X=-EK zH{IRy^Q6$jognbDWiw~ic6TF}r|yhy#zGWnQKg9sUNYAZ(X!@5jcjMMiT;in zsXaM8mFWt@Qem4VdV9Ug_$c8cB9<>#jO2U5#=0)PC2TB_PFO4_&#q36%xVW3IM z&9~>~J|zQtAti;79Qd5ukGfWbr6ST!HFc75sR^8|6R*53SPO%{z^n&Jl0xk=^((V4 zg#|pBmFWM9rhs2MLjyfuJtJb!+!=s5grJp7L0A}&&*2p_n)&~yR zLQQIFY8dEC(w3IAY;0`fK*9^SS`YuMM~Yx>Z5`U;efSHcMQn{DGZic>EauuFiK61- z#Qgkt(C@7NE;a3}w6$dA^4bh{oNNvyCMCT{;p|yiZ1!|W{hn_BRuA&=@tN4)8||}X z+_fincC?YVKDD!(8t}UhAbUtilb?22te^03*Ih5x)U0jm=t$DFjHlF6f{NvJ1tP&J zWbm=vu0B!0h4WxnS5gX=rQJmj!l1<}CRpbQ!YIn>9T-3ZSrs{@VJw~JV|n6%WE%P6 zJ>^=($^jgLg2adI(1SP-N4Ts93A_9H=!Aqw4%;p%z5Xs4(Ay$PbpUem=K9R;Y=0I9 z*m!;5FCHP``$vZkJQN!n8(0v?3s~Jy0l{pM}M)T>X1}Lj7k> z3PEbI0j1uh>~cut-s|wgz?Q_VX6cXI|2o6mTx0o}I31l#3Lm}~JI5KW9fO~6b1~TE zdN9N6%*3Tn>mAV~#k%Pe6_0+PP?;~*I{^(|%EN=tW+W?=3cAG$ zDH!I(#Ke4GSV$v&b5M&f-PFi9F*%7J7=<&;7C!ivQ>~*_W}1kjB_Pu+kcgvXf-)a^ ztGryk>9%${X7{qZf|)Dud92gUQl?G*=H|q6H(}~zt@}h{bqO(1MIEQP0)Fjb;hgkP zU?7K%7@L?_*xRE^;V$_2`OOgbM4*qWq`!}hRC*mM4F_@)B!u~4)uF(p10^lRk*+^x z!c&IW+uKX>+=I#MU@jO1hqA!#C-ed6*TK?-9sQQ?gh*@JE)3CTzsk}Ezk7!OidVai z?b$PAUteF6!7axpzk%e)koL`anGBe1oteC^j{t(P0`WBf;C`eqYr|mPf0v{{>(FX{ z+p`@zc@Qvvu5x3VRj_axetp5fIr`axA)A4SP_y$KL=TR(vIjR6pg2uN$F!Zi6j_3C zc6PhDeUNqhY9PusiboDKsmH1TyE~;nGC26ropU|k(^aHT8ih&oJIf;Nlv0DTF@Y_k zro(w8r3}349~;{aDMu#dwnTiqLm(1c&U`cwa@#-!sB4Jrl7qE@QBY9-&mlc3d={Tw zNWAzpR6cb+L_RQC`&t8>bLLa!T65r^iI37lD$yw?xqbD)R%C9BE3L=ldXMh zsroghp*k#o;5j1r-ch5PFyKe3)9WBWqV1B}d`=65;G~wZwPo_VIEVyMoR2TR6b+w) zM1cyM|NX7-uiw9;J1tvUC6gM3E7Gby@+sSW{Dz9NPS}oOOHp zGxL!01r&0er^=llEM!h#*4A*WdYT!ksS&8uj3^mm*`^W!iZu1RKZ6-Hpdet1#I#0H%9S+6$w6BR*VE)0uYv&K~HjJ<5a zR9YGyC@-b;2Y{u@ynQQfPfPA{l2+` zR4``BQF&07?D9WKcuY>8T^cmq-b)yCPa)p{c ziuCyIuV25;wNvfuB>cD#qwNm73vxX@y+$`^6aATLhNg2w|L7?8Dv*aCQ$^3zvZzHx zDPE7}1ZQVw8)n{v&Fu=jsgI^@Wcr_sgMkr8h>k={NB8Fb*7x?`cD~$=L9++5fXhk@ zhe>k>cqc%eQ86%NOid}bhBLM6Mu5Te8zk+30VW6pjY#L^<{#tZxFA6ZDS#{H4!k~N zdBA45X(OpN{068$qTa`s!Ofogdi#!iGr2dZNLsJxT{qEPeD{mbii&A`D8Q3jnFFnC0mn#tAQ4pe7euIB!NWmB zLR#;MCI*3#5Rm@+pqg1k^ofU?`v)L-YlnyNR((+1f0<_<9%-QQj(@T0)4zVIbK%dO z#%2)0*?x;JB_-wR;qg&VO2>(&Rv{jSfnmPVnp7~J1b{()8f%wGbah%_W+a3*+x@aR=X0ShtBx2pQ+=bg{&b!RfsMWEuCjR+#Nzb7YC&92nZ9UD#RdBstq|N3zduIC6g&p)&xcM zR=*Dqx4Jl(=i=pkS5w33=;V}`ni>iWX23br)o^vg01Q!sf$m8OJ2K)KdK$89f zb{YKv34w^d?&iW0k;e$pps7*qPAauM5UqZPgoOBEk@5L>61O5-Fe;^)4_3T=+5h@z z?Z=a_Z$eO3aXo60y$U6S#zNL`@>4@X3aGFEU3qJTU7BeyNTD`1H&;TDH1fI!Q>m3J3sLo`v_U5kpNyN}Wn^Ro zVTN=OXO%dKvb1&>J9_uH9WpjK3o1?ovRP-ix{uWC?@C*AI8N2J-^TCX?|`kG*38Du zjpx2SDhH0l3E*!%whQ!7X(zF?OF~M@PZwF*Vz$ZDEJOl7$;mFV#WrEoo13dzHfn&BF)08n_R}H{f9z2ppLle6+4t3Y2n2?Mz)!`XD@@xf0A)(A z+AtLG9R%28_7sm!er;!>Sg!Ww<)`HQe6!FdjhxCtcBSc{Eb7ThW!^Sn41lwSxI{!+ zQe|nG-Cvf~TRJ&m!D@^Pf2_OKC7+#nzz9D~5~@S$>Q_fyIMZqT4l^Hjnt=L^LKP4M zKF12g;~TyHkUe56ZmVAN_0CXhY`C`ufcNMC!d#$~{LFT;1Pvb_ztZ}KV!3NzAX3a} z8APYMK;AgIX0kvbgb92)5{y7Wq0gQw%-|=V{S+!JAt#6J(WQi!35klK||C+d9}zC%swO*@+MF0ytYoZ<=*{fQQ ziO`Th;3v6M_d?Kq5j99-J?it|5CZx_w?KH;1j$0mj)67^tVL!5xqAu1>+a70w%IVo2nPkowJD`emusrxN>8r29?M;KRa zUEO;Cus|XZM1~Y#k^up&{b{a3S;e3o!@Bc3Op-sJxT&pt)U}Zv0vzMNzw1%dFmcR2qYYPNN!_dS zM%8S_0jjrL{rj#7ijP_rnM$qTW^UzGs-^;t;jeBE(^vKQJL2q2*sj)ga2ABb<$D|! zbW}x1{MKnec1aEHkBVUc>C3-A+x&r+pb0}jKuBc&gQ-JjF$?!khqi1$|r z5SJjz2MrW-bmi6YY!~?7y>KYlF#Q_%)xfg*`$z&1T9LFf$w=o!0rK!dUE!?%C45*| zM+Dy97~I;fw)tOU^X2Cqo$#pW@XDvQz?Y99eHRh}|7g@U&vB&{o7q-TM@2=!E8?0w znWwnJm3>iBS3!;XoIOH^OqYg+MhdDfW(zN_NfGHA8^*L9ht0K9U9BMizY^q**JjuY zJ}xE2Jq^~aQY8H5P-aX?ftixF?{+JckP2eUj?3R1RK!sf5yjrBb~>EA`s#G&_cfW@ zg>r2ZDM)$^h#g>m&NPL6p}3PaLeipHlF>0i4H?HAcf!Gg)!9zKgS`VqL`DK0t<75Q z8fO+y8B|quaz2{d5igO}CZ(XT7EYz88cR`OoRCKVM338hc+{c%2w`a+2Mu+V%FGKcY9iy$up}4{~1Kx$BU;Zn7hY%===Mx)>XcK*Wix_X%-niHYr5YSPggZpf8@zS0#F_@Cp8$BS51m`N%jR#S2BV+0#w%A~VfKc{y#3-XK!eH_< zjgMPXL>bh6XFG{*K;G$4pn}uL)3hC&#J{@p2H|0R8Z5E|!PmniK_h!#KU2GmBr(tj zk%YkBhr;z#WsT<29sUHrf{jhztg0GR$G3K3ZI~|>AA|VZllB;xumYr{iNw3Vqs7IW zvH(@Ru`-|M=~$&|^d)#%8-}Rj_ngatsG2T4+1&Ti#QfAoxj9dSxPO4A22Ui65dDN+ zE&IdL+Xm;3+kYLIyg^^MeN$Pwa)hCdo@n|oA`Zk~zk^?oDIyvevCf{JA&TE%!d$np zM?P)#i8GrtayO^W@cqG3oEoA`mTw-1x zHaR)@7d23CgkEkO6A5Sic$HIolcAKU>)ZLvZ1t8%Z7Z#rZsG6<%oI@XToZxM_S3;j zZhi)h2`UH{8M(K=+^*3iUv0?jlqH&(R~t711`W;*aXkJQcIE&826Am(Kve*lpo%5$ zHCKC7Ckh%XJ3BN$7dN)HW=@ZfE4=@JnWydgomT1>>`m$A&7VARD|FC7q7VQgY%mET z8Xr-7`8dM^b#%ah;`(?Lf_#y$@h8(#iu^JS70!l+`e$(6asLu<2e+9qf6!0|xy60I zMi=smd9QJ}a<aZVkTEcz|3r_EuN`ycQ|V`wYKxEd z*#g1b>Rm(xDl7>2U8DKgLd~(N&tzt65YJs}7!%3Td)yk(Oy7 z%zk3-(RAb4BypOTu4!;)fIHnxufrZfvII`5w2WN~4kZi(9LI_y2~rQsN|@TDV9+Mm z$+DgHhoqn_-62y76oN3+eLYG;Qo$21conoccUFTABr*6ujN^y zU|a52+w78b!*(Wy z5;Ib^`cNaY+*$wIuc6t7jpm;8FUF-8e}-1xZjah?)&O<^1H+@A<^-_I!X~z$xZQ&V z_C&>xtS`UyPJBA3tegPr`8T^pIlYtTHxT5bfQ_Vm`Z<|zfA1rXakB>+Z2Vh_TL8Ag zPmq0p!E$nQ|%1kkV%uKma0|y8T z08YnHFI=MvTo~x_2?OaRPjdt>cX(L!m5og&P=^1@*J#71ItX6k>LOsl?$9$y|0fZE zY$Fh`i5?Fr`9wu}IaAuS{emH55E=}jE&yZ!XgBzaAT1mIR2yJV!+D%&|Ak0Pt*En(Z++tFDHB|k%$BqYqhd+6)}X&VMI_`hk5I>FUE z#xozge^OFHULHriux{AXs(=G9)ohLswm)4}HjNNA&%e~sAvq;Vn@a>hkd6zOfZ{Um zfI%>iq)iLnIPorIa)jo622j0VDijg6`DJK5BJvX^$tN?RluVPKJeE?58G4S1N~-T{sR?h$yG?WR+K*6-0TsVo+g=>^Wl|}I;mC?Me zYmzWg$KDBOPRU5W=K=WteK6NUTm^sgJ}?2$(w~-s<8B|ZTy0o}gol1Z#O0kWJ_!ac zVI6=S(xeZ`)rWOe2m>Y7+}^&Dn9i=~|Az^Zv6MF5gw^vz(IkC`-GnTYfNZeX;PPns zIXgRp#2N=n2%x%^%1%eP!q1-BTOQ?SSP=Nwz2RKmaP22^n4banjBr%y0nKS`yif*~(#KSmmY9kJf)B4= zBk*L-&A>D%MVi;1!l%r-dZ`g(m{7s=91thK9>4}3z*4I(0jRUb5%V5_$gT=Jfd9jR zWbn9iGx#0S^aP=l7Ld$&oH_m15LDpi$5r$mLExq$sVqd z^+`Nfwjyz`Y?QQw=(K_42Zls0?RNq&b1S-DwV{BarfM)=bji!96&*qcgPbFa*B9 zTE+0~FGMbL7?&r@_!m0ruP6^70O|wgX|zJWaul%B@S5o3f9sV&)a+^iabD;b=qeF$ zaa-Oc6m1~NU=Hy0qXGhy$nhi-pSl>J6Fqj_nVFeZQg9SJK@#;tWHZz`X=BvrM|f5J zA|)kH{nzdgXE3*wV%^3T{8&B$6{NaPLXOb>fZg4PaM*@2RfU2I-_e@DXz{*#5|~+<4mZlce)&v{6X7i)l3b1bV^JeR+H5cXe~~yXEjZ!GA|OiI6Mx?cLoQP*KCVBKoWv2VkfN76e+qLts8} zF1-*57Z*&~K`}cWrMzAUfZ_>W3;56$bTMyet_}^*E)wAvcc)TP9gO*~w6uU6iPLqh`Y^%y+W+m~)_Hod{Mx}QfHSEU)w*MZ}()T zVE|A9;M4)kVF(;jMf1mBU8QuerarLnB8$M?+}v1!@#B|YUq#M612K#^AWD(Dv<8EK z-5Qt*F=ULWcUgU$ZwHPCx#!*#-Xg`_`V9Npeob(h2Am#8UY`0tX+1rLS?ExVnmQ=y z0}3W=G#5d@x#V(kl4*nAI?CS=6Cryl#q^ae0?tnTQ37CloP48AWUVs3t-tH1o!wEo>S{VVXLA~s_mJXd_)iIbBk#^2w; zNl0w&gD(q_fo)O+oK93G&O-o|QI_bYaW)*X}`o<+n$X zW~vd`*!t_2TU4Cg=eU$-5QDnHnHzr0XU?oP)NEYyzMg!_P^SEUG<|m|p{z=> zDkRw>qiJS`WJE$4*=fi~_9an9MrO*E?1WS*qq2#RL{ix@%E&13JJ9;9cx%W0Bh2DWP3|!wC-|Uu4ejiX@9#A=)s~`uuXSO%FQ%Q6SvhLA;bo`@ zjEEmE{T29aq(|Rn4G3iS62Ev-IK{={P{D3^EZH7NW0Z7~d%BOZB_Y0ASKJo)iF{U= zA4mabOJty0ojq39ZW)8D3JKV50Re%#vR9qrpS=~nG1-&%`g@{f=VTCd^Mura2TY%4 zzVLY(ZNI6idR_U(cz+FbOGj2s3L)40Lt0~g^oL(~syrpIi$`ZEpI)Led!lbijOq4y zI11_eiXC^AW@6Jg?E14>kM1My)nGPiO2~96+{n{0G-v}#={wJ1C=sw&PORQ1KUd@!edX^J}@E>V1-cKI%j5TiiZBu%rqvJ#Icp4$J zHSfeO`kbrdO59oX5lwp`5x&iJ{G617Lruq>%TE`73hFKT{50V1Y)uLXSxLrxu>m`& znL7_yKXt%FVZft=~-Y}m2<+Yr!H7f!JM_OH2cUf%By3s_RBV4Q;d653-)m|u() zY0x`*XX$~nrFW(MW`4e^*^Ma_=4UA^Exjc~!>Jp?SmSDQlfw#YJGLzkGRU55OVdkb zJAC*>L7et^VrC{zKkv`01FNgKooWXS4(+`muPA0&+rIVJ0^i@$MVV^a-L}nX{+UGo zO$^RfPS;VAT3v9yGr&(XdH2edmx+}%*k!2xHINPr0UzuCrggQ52;A_ZqOmDsXr;VI zh%Y5UV@1`)1=UTBL^Z|RTd_xH68L03m!tCo)0bC-^<4g9Jv8wwG!}P zZ=XBo#|1hN`^DBq(u3iCsNJnc47@ZHO-I*Psq&0^=HC|7V;b|=`?r((O#hBuMxUE6 zh|u=Se8tmrFF%xl8kqu+O~rU(Q%1E;)bJ5G+!?)u_5RvCE^g zvvKlm|IEjaai6>LwtHpH%?qEkw^geEapQ-DP?C=DqhZ%(g?oxAYM)>Jj5(%x)h{nj zw{W`vNpGK7>a2X3d+lzY4kT&du>?*{T_okMZEbCtpJp*v`345o^72rWl>e%y!NvDy zSm(?;q;ee5XM4i`b4G277DW#>O|Qi)7#D%ZrOC5gi;oF~{cPo$$3nRxx$) zl>BOZn%=<0?o>lTz0S423toA}XHshG>jzV=4JcQ7|Au;S!~Xpp3u^JgLPAQQjZrAM z{QGm2s$}Z@?`YGaG5pwTm?d4A=;S|J<+~$Ambl9N`9bHMmWj(V!&=Pz1;z%nQ>$M0 zHrd*1G{vQ+{;<}}NSCW|uFCV=9V;wLeRB;Bu_1SwKEz&D zP`DnY$Xk*SuddQolfLT9@{x0&gx*SuZkoX1)#msGxjZ}8m{Vj~4|Y-=%#Fgp4LY|% z%#G}P2JfMk=e{e_Q`6I4Uo-A0iHIld%Dwlk)v-fGp*?4LJaR5~>cxqBaaFILe7IdI z|8A!(#v2p?s1biW;OG=^|DtMCplW~n@ncEfwUsf)z9+&SKL?6Z%-sM%DYI--RuK}r zeYVZi)IBrrOd|9B&6_7yessHAzwl3)BW^VF?vH)iAg`K~RxKsU#&Ot z;^On;=T?aIy$5JfSsI4ivZ5k!{>a3S2O6i&jA>QmYzPaa%1diJLw%7QQQ%rl@q>yr=M{g zaEz{BeD^)>7_cj(-;IWbhCx9=HKkADHgGAOQL%sF?;}EG6@x)v0Zj*LAeUd?l+RXr zvl6Sbn+CQ^C725s=EN+oe51(*wE+I$6?B)QxtUjL?;ZWz$Zfmzp8h9=$Un9EZzAWVT=@jJ_!d#S zj_s))97siBccDi!x#XX^x8+KRntM3+<1?<<#-`XHjvI2jRYQY{ULZljEJOiW(bJ*k0)3yjCXu0wPOH@ z-%9S^j!+a;|TxpjCQYiaFHA_d0}DSA?zeXewh z7vh+su`wzGJQ^k(y*8kLCns}ixA`yLX3h#<-*RonNWiDq;>4lkqk3sROXg;4^}FJT zz2)b(2X8$6$jCcaMYU<3FTOMD!s&c>kQYwg-hGrCmJD?;izD49B0NJe?R<=q8l=2|%(3XB(k=E_p4eVioX@CR$L*^PPMbzr0`-J^iQ_Op+&K!zpQc+z|K* z?H1Y>nO{HJzUkhf?5l)|ick=>e$%CM4BiKga!xkX-8rmz@Rs0_yZOp5uI`;Ju?zR+ zeqS5fY{C0~P$aV@lnklwL$|XGnw4uO`R3_IM@;r~DejjR8osu!7%F)B^oYOzTGAVb zPNDI0Adav3Kj{`IOb1XyM_T%?5Hyy=zpD{5dQ8+LI}kG)kW*F5 z2EW7r6@B==@KhlY-z$X#!Ld&|h! z=eLNLJ*-i*B?D?tq{x2wT`rcYkVUOwW5X=v;bCOaPJLXH_EeGI99?iTGqYyDBr!La zo194Z;IZTnx#1yIbNlr_;r2qky#`t{nd-xSJEa1jiYFSHTw1!!e6e~>J5W^MCUX@7 zy<^JE7vUXo!B>t&3Hbcz$$6X+8{7HN|KAf{VZ%h!Kq6bX{)IRgfrM{<-1U6|uGt5Z8bzOO)t3syxW;OV)>t)x*&KY$3 z?QZz$V4_aLs_gPk;Tq+&1N|+n{N;5|KD_Kd{_ew*%GQIwKOQ*YD%^kY0P8isS{hcn zPeF{&l+@KI&)rt$uy32+^sZvZYc3hF>Yl6b_*-2^scySf&7UzXwWR|~Wz}&YVNV*r zpx}J{F6Zc&m^V>J*BrTj3DXk6Z_tX+F*4e&F3&Q)lVMB`2@4H9hb~+*#$CCfJO63A z#T|=R$71+8RNT`*K7XI1w;RmFx2;M0@3=kMV9wER$*8<&HQbQ0Lr}|$o%5j6>Q4>@ zA2T*pFLMV)jRIpYcGc+0$JTAuwA{&tSxsv)YEldRAf(WqK7D!v6+tEAvv{#;w`GEz zeOt1Ywl+O{Cs^yE^>dSD+-?G~6FHS{#K(TFHGGA0UrTAexSIM49_jTtHL$9{nm5Wj z85|HmL56z|PUXhaz!qD;EK*)z)Lf@TN?XgApw{JDEJ# z?)P>R!FG%WclL!a*@Vm)y>LHI@@4t7tOs6s0lP7r)(ng;hTdHrq{!#VkVu=i>P(tUeG!|DrR;baWWS&7OSg{(Jbo_!~9lxT9*y3lw0;yjmLY zd61nw`@6@|Mmp(3Bp>aHMpg%^%rqjS!x0GS9!15qq^R@KNz0HW0}-HoU9S=(!xojur2|Ej@ygneM0gkj@3L`>K;rG5Km*2Xt+zIuDY2%(x+i}OWb_eL73IdGD6Itd?!EDvxUs3=Y1-F$UbB$7TaJ6Y zY0sQFGuoDN9J~Q?_tP>m8p*}*3>P49oy?^qO)EJdi%T$NchujP?tED=2OD1;q99Ldk0u&IwYsAVJ zMeDtT;eZ1K6*bPD<+NOVX*qE1tKYGRO_yebX+<#6vHe)>v&SEqz0URQ{T0s3ia7<@ zn(S)U3B5xT{T2I3#<*-sB)YShq`V&&beZPj!F5B><2!gT9@H`Uj+5Jyl9F_iq)E2C zwEMU|fWw8=K>9b^W9*0|{6u=!1P~mn67vlz?nxt2J`{jzzT?#_fW- zMsjU#u|u4Xel)$pHJ6HgrF=i(?sQCep|G$JBn)E9qeqW`C6zgKihX@mCpjU zzEW1lW2@I2P^&FAHWZqb(_<-vah#;!bI5q~L?BHD6G_ei=LkP2X;aUr9WRpY@nB4# zK}O#69Vhlk44?20tiIA~yx01_r4C~9H~C!uOp-Hmxh5*4)84)tb1!F^2&C2A z0P4Jf+_5_y>B>~#Ti(#f`hMTJY7ZEv^^)a05@vTx@$-<1yS6v$&dGLrY6I ze67w&a*(9|l9CdqW6VLm*hVnkd)Rq!6>LJ2e(qhnS_IR417BNNftLd7NsH_Ufzi*V zKR+A#`BN`jJ03r5Ut$(8ODMatsAUF^pHC{#nwK#2^o2gd3Y%}-T^7oLSP9X8^eX4{ zGgN4>DZ)W!0W{4oB0}G2F>$T+t`vR><(kI&+P_n}BD4trPwyUfPL&=l^Ie&9Iwrz2 zs5D3bU2t|Um6`fr8W72?W?%f&ZN_AYNmaeWnyf5KN0ibGY)t?^)1arscJuF;c z_}RS)qQhi+KZYU$-jm|^3ZZ$Ke#Zl0Y?(QBk{oIb9s8yACZ;~*ZI_agLXb6PxvNsb zqs2^?^GK?gT{S04NQCXlcrV4lNUkYVJ|uNt@!x_WpVmn^e8imutho#_7J;-g)JglX11o#9A^1D4qxW)MiyGnxOl#i)p2rCM_1CXyGz@GZ@qIMiO{J|Mtj+?F zuB!`1`)PS0-NM z)JeGn5m!bpgR84dEKz})xA!(5!<`^`C6Y!bD{+3`-_VrX(7mx~>V47s@|rWb^U!rr zlsk1>_msq=Ac^$m@IoWZu7{!cw(t-6LW{3fc!N)Cj2X@Bje=c z1VBs&nlv8MkJhov<)`yD3eCOk#j5L9j(M<%0arF;k4_E3#(Y|^&bq;F;dvcv)dhBs z?y_8HK3NSDgH?#vjt8WPHD8kO4MrcisGMKT*6+;`2hltUOXdnD7ogB;YHPn~X(^~Z zagB}sW|OToIJ%@*4pZs`2}@l>)9%PqLa-kU!@!6~t1|<>sW+VLh36a&MrgRPmO8}K zwl}m$RNsz@+R7?oWQAWqX}V{um7q}85B8FJ`R@Kl@WH3er7*KIrl%8B729r zIvQ}m|5E^MeCwto7N@rH#&rpp3*rvG4-UR*ju%yL(cdz9Da+QhD&I9O(~>Dk=OIU< z#o}2{e~_%hKqH2g<;aITLx`h-u+Xt)_>G{N!JKRK1CeJ4rXLjKmJnpj)sps1TfhX* zbn4EZ`ur>k^#XK8%bd)K6d0t8e*NO}^SYOKS+ZrKB*icHk)D@_O^v}o8Ll%Voz#80FCNg%{)?X^(S7Wzx0GjaA(*{*@m4Q= zK12pm|S2G$2%A6@*Gr&?qI? z9dafHTA>S&+8IImLW4|im~SLpo<&z@;_WSqWMvQd5GeKhY{TyPk7t}mKCiDJNs@J( z+xYuE5Qk!k>;#zMUB!7u$P{&N51&W^eJvNB%KMLDRmrlU&3*UrN5MQPN2TUvxahK1+w0aFzl9JbE z&XS89YZnm2KrR^2BiIb*g<1?o*;VtI&6jD|l3j!$OY+mAfM}mkicz?z4));FW0`pp;;6b)FtQM-ptu4v2X-g$fo}GcapIS zB?cC+)FVw#vC&x-e}8{G4=J}%9e^L=_QQ&5k#2;??Jy~px)BLh25YPGofyuVyz-O+ z8?T|h{w4wmIWK|S^h2Zoiwp7&RB*}oQ_M=VP7g&h$TrUL8m)Y($F$jtYd>`%$V5!ELOBRpEvw1K zj4Lh8&DQu&xNrsnk;gtJe;k~TM|~Y(L7e+r>D85u#ANFWjPg2Z#|;XM#rvKS&czCdm?iW&UKS%q>K^ilh--DyLX`#r ze7XlGWv+h429&1tAPvE_2Z+R{3O7M4#w=6>gAu9}rOytKe}Y^>hiwGX#_U8+nlv&H z3ft~ThYWCLUM&)R7mmouWpz8D4HW}knu+{|jb%FRsX_?_kqx?H=x^dqW@}5~Hy`Sz zXd^*)M;h~C808FABIPP+=+(W6l0CfaB=X={7?E!0TX9S-Sp3Hpn^=GRcv(Ndd+ zEffe$4X{Ck`X!~giTWU{9mDE~aCSEUDHMOeP(mYqYLeTB`LOeVEs{BDZ60v=t8Xl1 zahNQK5e5H` z29NZwC_d|Ie(=^ARIuOpyh~TYlQ{ae!%{27j8!DE&lx4?vUoU z@v#CQAMv2N&x@k4drP#Xt*N4**2!v!eG0hLJsA%jIz$E~Gz(;<__5fsy~^(|sqe;9 z7(sECj%DuDz>@kJRjFx(D?d0e8VPn-dOPGjB}syZU2~j)oJEz-M0O$?8Y;56s|#a= zB8=2fLqdljy{(uSQ<=ejCTmipMatg$YdHPj-f0Uj^}<8{IPbQ1mx`qs%7kTpdcx%8 z?OnB}WiA1n`x3OKhjnL|uZAN`Nc=Y6^|azW_f2fS}=rMGc#G(v_R zulEVBa)?Y7*yUnULw^}JQlWje!k-fTRVfO_PcU>s!(-;YnOzzk-RkOmJLi!r6cm7n z6hTMF<_IspT5^8BkUP51TJ$b=>{hVp-+%3HqpHj0nS)s_?W!rt5W7RM`U?+oa)!pn z8W4Nqwre3ClNBu@qh6>?2HQb&v9Nh6#Un*;y)l3Y4`)!l$w&fTaU!R*M}mHU!exbS zl`LdGd@w>XgA!yI*ZlwuzPk66k%2&qG!n)|P>9h@pOa1!I{kpyppiq$d zZ9pEw@uw}e1^ZKWO#UXf4nin4_w}izcmPmQ_~m1(T=bfeJM4Erb#4bRhn}eOKT`MO zHuldBkrr15e412r35U$J8O~jYE|Qd|yE+0qKIt~NF3;cHry0I%@UJsRX@P`$4(80w z6xIH?t6CE1Q~ac?a2`Z1tJ%@xv^J->USszqQe^oYwnp)|Ah~^ zuLB55D$;Nqmm?x5W{L*d6L1c=!YV5AAKGk;3+Z{`AzNM(jT-A79&9exu|@|}o>K#r z_rarL+I7E@JzXO!18>6p=KvSX7@8Br3tXEACm9XS2&qxOBR`y3E-!)p^UY5 zE*7+sPNLnirM{hLkHX+W=spja1hhAkfkZ(l4o4 zy$+-ymx~oy=WTTwlM*%lX$xeMP~g|ZPhBl(Em0mzQUwCdDkAOb;FEzG<~Yty<*nqixvIboBJR`}c2e9Ef{{_r%C~ zBpTNcl9V6Z_^HI^U75bm&7hzuL%Ar^5?R$JXir{rIKKKZHC3pS!J-`rJsU_7GB8%g z1`||JFs~@Gt_uV1lZvtS_nDbUoEZ_O#SjHbH`Ma#o*0o}8-D=>fnfUentvX>HtNDGU zv9*=&z=1fx-M9-}Rmt;8+#vwqE|gK=YrSTWc%?t3CsrzkGelHPOgLcm0rx&;c6JAs zG_!K2?;|7Ri4Cx8ZGiSH`$-^U3x1|b3l+-OzAsil0vic2KWDQ&(z)=ahn)8TI_|kN|5Ot3W zbT?ktfWI9=L`E9#14UB*q3``ux%!lFAT)b+`2=nz?__qEc4%+|$kOT%<|9LlAf==D zeLLs@hln3N#d@H$#q;I?Qc-{Sve8!B1?~jd%b{UmgUD#j%LmIaI{?w*1RjKAM`p0e zKn5+{mM!)q$+H0g#^R)$o-R@Mh%}TvyRT(#9IN8q;mGaO45eaj&~IeNPQOW z>)_C$ffhE;qEZ%3#shq(QLzOVJ3D)~p0q%0DApDED~~KHwE_HKh3q|aC;`3hm~5!h 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 delta 49679 zcmXtAWmpwmv_5oqN;iiPL^`Bfx;qtVknTBvG)k9rhaezQ0)jLO(xtSNfPjQF+|76I z{pBMuXV1*uYrVBdjz*n`K&>m4frQ^ccA^S0GH6J;L;?h^?FXhr2_ba;PFaP<#&*UA zWm(4QFVf$ZIm8NAFofA`Mi^Qovd1zF)>IdTb$vL#`nCFPADM}1Z;xmBY`2lu_r;4B zdFEMJqY~xMng*XeR)Y^R+s?|$MQ#zMg(W0tvTKuy|M>Z{*lqc9@{jI)={xAG^G=0x zScJxWqx0^z=acuYm9=$fe#oT?R}Ei$eEeZQwcE#qjz1=$q>D77i9pv3uI3 zKNHte&)nq@WAT1jG_{Rq-Wvg^t6!Q*O%Bb zh21H(t?m)AJnL)Tuiwk+vhu85UEkzGw-1Vy68h<(>ri}Jv98w}z7AO-H<#AaRr<;* zD!*36X#0?S4{_J3|43tQPS78?#(>Z-W!u4 z&6gnR+qTyZx^m(4zPohNrV)t#x)2Ujn?pew2dRD%kH+e_VwR^ zwdJ!*Z|xw9-SBMT{JT85y1+Bn@t;3UX(asWGSkvnvuI75UCBB+IuzX84uW+oGq_0h z83XXao$SLdXRGva!Z8Tar_$@{9zA>Uq8R*akPmT`F7mhZhjOxzEV7vIe)Z|E>F?k1 zbH#o8$BUKfp}P=VY9Y0ESF;Rkk?j&YBZNp*`&E|t$;tfu9JOrX+1-|bXUM{?FeIcC zW5iJuIS)(i*i_{@t5`^mgzV<#y1vf9VlLh6d+qL%STfRyPa(O)Sx(bM!F4PSk?>@5 z@7;-AYT<2fn<7rgH##XQvGqzJtKxsE{JzmiTg70=($OYsB*2FCq@1`;x!-9_X`aKx5tW?Wl% ze1N~V)Kn)?NP5eaC#Ep!woKj^cqTB*`-A2Y`&QqTA*bLIrE-m!HR!I=xy`S>rDJRK zorPs9Q*3=b?~*1N(~~FWdowlJ>$8YPr`gB6<93y`qiG7$Zz~KHO`2U7MWm$e$|52n zxCI1A4XU-XAXFAMHk+{mnF{@PU2!Le7*ry1Mo5tFk9M(@%-T zNwLu`Pkx6hCD1X7h)}+H^Co%j3!fU;{jWx)?r3~`eC8URD7Z7(HRGPy*%d)|w}aom ze>a4asuvX(AJ{KOt46-qN=L{Ro|7V+2NM~SV;N!5P;@j51}+~L$B18!=`>R<I7YS-{EZhi>o%|(`e5uJpemd#TU zC~~koKLnefpC5dmK}g7em|8J`Zp3w%y~*XLL35i~Itov8Y+`oyl_abI2?bp_uPbQl zJ8f@oZ-MLLr$d{`eDB-^vmL3U$GyE;okSek@L1l!fAIk|?q2w%Ix%QCk%TbOuw3VM2^IXO9A-6=R)ByHd_C@YW!lg7p) zpFJZ1$0^JV9`o+on=96O>yzzq7)*wc?c)4AQ`ttI^-GG*6rsXP23Q~g0YOVki?R#; z?d_Et%mhDUV^arXzFbo>^glI`V^S0}$GF+d^dE0l{`IXK{L6s1Aw>Fq_e4El>!rj`|! z#${OKd$9C~pMSCnkB5in@bFMtPcJq2iy*)9J9IrJGr~&7*fmla!V>5YvyL>_ayGWM z*0#3c>CS5(g&ql_g@p@d^bMpuI^Sk4D5+;e!O(F_sr`)H>6d3gAK{qihEQo3q#j10d6lh+oAgc3V zUD;MXPOZ|P+?&Wwl!kJyysvpm`#|ookW5eLFx>nL*(HV;rpd9@{ zUMWjUBfCG;lUx2&ALX^Q2tVK52A*GBSTD8vPdxCrczg)`Y3|yapYp3=IXZTrd=^LE z*GFo5^lbXXNgH)@6hq9rX!SKLqGo5-5HIl=w}l#i;#}QeUmOw!#u5HVE{=e`^f%}t zLPB?EH6=f!$c4PcFYfO-pUXiH!S9BhYGb)IB@Eee8nUdcEJ_h~hCIpO*c#L3B9#<2 zoov1M`Gyye?cMFo`Q>iy-_E-mO-D}=bY(R)TyO+mQwcgUh=>^NPLGL-if+%=(m&?s zM=BVKz@cz;m`13|Y7*;y43mQ4QVA$~@S(zzl9FHuP>Ymb^#1$Pl^~_FuYS5C@U8-0 zgvo6reH_N7rlme$mmm{9NHW>VUsJ1xEOia@^M@*X6LnNtmDIBxT}=yNZ|F)zRd#BB ztszuW^lX$1Vfb`YIrg;l1h1kpBsYFcBu844|GDLiJu$Wnr{Aykt+wo>)6A0y&Ck!* z0Oc&ACqwh_nqPx;{G)^J$-y#x0=-l}fC`nTH`!TP)(mYb4_kbwkQd}oyZZY2hQEI0 zgovd76cjKBIL~S61Rfn7jTI{qfG+uKtWXYARoi?G3DH;jo9!ja(%t)S) zThYcN3I$@d-@gUCv}s#&i1Vn04H|DpzZI`<^=@*#T&f?<_lks#KeVQ27tXy91*H$eZk$?kblMVrrS z3$8Q)HpDziqOjBDiQ%n-=mtC3o}imY!ec=%Yu3<9PkUv?qja#;p-@m=xKJ0X=k_E9jTAnyn zZ%eAd_4RC7H#%OuCgc!ye(6NaK@X|5Ds$62{Bt$|ZE#aaRu=KIS>OMOii$w#&tY8m zmq`Eikk~X>vX}jpPFokDwxKvuQhCo*O3M%|QkSJ>N3w`MaP?WIS)F|?tAfps?r+xb zTZ6DL1+!xOm@(LDGcz;x<3(ui&051MD&QY=G^e)QIWaLXFmN9{M*Z3BrX(#5D|5Pt ztg-HiJpB9j%f<1Q(=518I3feiJEMO7fZi&`S}aKo55}$u<)IdAxX%xzq$bi(D6PKZ zF(3Tq`G?A1307dtZ*}T;Q~?f=sGOiva{2aaVZDUgn^682_KU(x3~t}Yi>t2bnw}u4 z=6TE~%+SX^A1p9xlTa#K&?+er+rhff{g&D=7CLK9LJsI+%FdQ&N#!^=1nhOpy&@tf zBr~^hF&V}oL0=yC6_|gnh}ai^X9+1OF|*VnU;gS>arutpu>AQ6On*DOrxLgSH8lqK zMpu_~`e?EKoM4K%+-WZ70pro(p*>bX!|T_0pU6(NlzT72K8t~(G`*zZG*uue#m$QW z>+T*bE|Pp);-E_`CMwF}A?AY`a8iI_`;Gia=rsi3Y{JczihZRUFH@Mj>UcfN>gu|= z%}q>qH{x@!er=mi>A*xOCxK3Yn11r-S`p1pAv3=jG3|^YinE$H$Wn2ZY67Md!Z~q}*4#(JIwfDIfj&_wVrZRKeaJ z4mG(gzwuoTHhgylcCmPMO$}qlH}OC}zmM^;v7d_cQ8+WfT|O2P%EQ%q+{n{=>FMF& zesk$fNljg>;IOex_PVXDj1n0hW0EFP9+UMT;-hK+Kt9PN$!CAK^4720U0%I{wfT$( zqF^Lra$U}!`w>463DLtl`}cF*;quZ6+IiY5)@t!tZI`cBCqy#s&uFHM>|Vp@VDWUj zXq_j!f9LI00+poQv()PwQ4?lxG(g)!gQ=*-f0F|M+WOhESG%*d%5jhFKW;2??TTon55e$lKMg zXbuvi- zsR~z4gbfZ3+QSiV|NLkSFD@>g+JwQ1ii%(`Iy$-uDjQdPXgKTm`b;wiW|WXtu33p| zQOUwPxs^|0x%@RY0BwFwtIxziA{hJnx?#urS3h7IRHFE_s{T*CceF5vXVO18y=#8z zw?zxuJcC=hSh3POyK+&HimJ)j4^9;GBT2a0r1hR#8Zdz->3je};A+*IVbQu-@wDRP z18-=1-q1qgk8FA|F`qw((324n6Du-r^AQQY^co3s+OahG>5rycik8HH$&6$r?a<-) z5tl@Mf7B_g;$dv$Xl&7v`}+WIVuDg@Yng-(S{&qrDpn3eNBK$8ksyy5m|cqb8u-> zabjke{O0CJ_ETr9DCQ@DXZs2vA(EHS$?xJ*V|6lx2D=d$OxSHHb&mK=q3!eM5t6}| z(uG=9pemRwL-a!LKCJwxO3+i00nFZ(pddRULSc1*(R^j*;oF3A-ZTLkjpvN9O#jG+ zzfY!Nj~#WrdCn6p@&kcKf{%wc9gx|iTdu+VW1?n->YXpR2&$C`tPreW0!nY92*qNe zprD9(xawZA0Tvh?7Z(o5^a&bzEsR?F+Zz}B^2aZIeU&-_PTc|ZsJR;fXsUj*A9?$K zuf-C(rYzmlS58vbrVKt)KNkf99|j9J+pqB*n%a3pKtv%=H?`}Wqlo0n-nME<#(>5 zWk}kwYRB7v+`C~5Rv>?SdAiHY$46xN-ro0PW=srLz`s2#Y44h8_Np8PSsC>9_YvO! zf=4=h<%quppc8DHa(c`CL3q>%XQJ%@!V)UAt4W|6|FB|Zf80bGM1(NIZ)qJTv`6&c0v!0wv`Mdqni!ee(&AbaW@IvfJ5a!2)s4C{(`kdI z)z;*gn;^yZ^P}4Ad-HnNMKO6rMH@ieO%{FM8Pr(0xZt&#?E{(W-Rx+tI8-jY-^R&$ ze;ScsV24e#*6De8Jce~GS@6Ci6V1V90^=u&kz-G?6fB#xFVuR zDeNeJ{|dYq?+)AKnyFTS@&QVA_d)-B87m(bgZ0RfG%;6QE}w$C;36hHy{qM=Kn5Rw z%B_XuIpW{ny$6pV$+~ATU%&ei2wefJqe zMUCIhk})$g18o5ZeBs&bg1^bn3oe~$)Nuw_1fPa^*y0lpnO>;!YmS6JF>LH}aNyuG zG@_e5=atvOh|b$0oZQY%M-eyeCBN`)QW+U9B=b7yF5T&*`I!vHY*_va@wH#aU|K|r?2G&rkei$(|P!Qwsi z@$vWfmjs3J@Z==*M~;mFw`*C%BK@W_6vkkgp-1o2BJ{E z9j(*$aIQZ%xAu7^~(L4oLR~|KW^~NSQ5)zV+4wL9gZ)if3lC&*h*&myZ4GX@~WQ8%D zBac;T)5cFt>A}-f=jP|3zbUNcUp+34o=XJ&!v(ZU9@I2}*(D~J zvPvP2Q@$jN1vzgSjzPJ`Nr)B0O`9EFOrCbJ-p`KUwuv6r{{H?7(`Fu^7$&8sqhnx1 z#a?_l$x0-|cB$;76V^D*iTE_P`?ERJcd2kzMdjq~bb!9AHwNmOEMKq0!Y!#|HOukR=og-~s z-Tx%Is@rHk!%Snh-s3EaK!s+uR#Rmt`=gMDVbS?g&~zE!uN)JhWmE zN^kPNliVN~+F*&DeP6mYH1zhu%0m>(nJseN<46D-Ifg?qNFw5;vAsT_{Z+M&26B6Q zyZh;mzPyssQ>JJbP#yo#N(Qxzf6o=qPdP6a*Ta(W0-};o7{i>1xOmU^?;4Jtu}Mi# z5)uqZl5cv`-9;w8plYw~eYiXg74_Vf^}TqUX2C_O_ogO~J~>_S#%kt$>7${K4pY?! zyS1TCv-VF)lOe zC^|b=t2;Y8JHg5uU3;JEu%Z&da`7^dx{AZlZ3T^E-~d``ai;a55lI)uKr-R*<&x^9 zMg4bhZXrmr!=f#He;Wlwu!q64$^N04&GYAI(%#jE4m;B*5)yi~X{whU`4WXye5d`f z*48JGPBV}HMgMD*>ub1m@Nb>2?{83t4mwe|40T%eZi6o=82B24+cs~1{Zc_~NWM)Z z{Hnb(74xszHMgveR#=0K4jLIX^hbAbQAy;r)S&B+#yoO#O!=y3IDk(_^5TU!fJN%@KK{%tT*Y11C zLP7G^KQ7M7uzHeUdw7JJ5x$NzY$I_v_bHj$=4NU%j@I{t+FFBdh;?tyZXh77%>J&h zP|krgDh6u;un|wT8Z-e7=axi;C2N|2rQ2eJ9Bn+Kb1`9z}eTC5=r`E+0TozjDyY@#X5Ln@Xmr zXi~0RB&;VgDR>9!HbMSBRL{cB&J1n^k6LJI=T_WjFIqiYsNU(2re?pLhO(W(!`HVN zZR~4zcahe^U8)7S-pU=bPhMEkLZ_@5Xl55qs}%vFk01WOXG+*3(BVSfmyF3jNn_-H}r& zVT0h?nr3Cc7$&XqH>wpatw}FNr&4e4pi7koC4HkzyHl&X+x5cBGs~~)I&O51t{OEI z8o5l?Z1t2jetv!cemnrYYT^^a(a8xncjwvBQB~mIwLY&Js>5V(FP!iTxoja9FUL&i zo!I~03fJK2OHWVThYJl+`)h`^Wp&dDQjQ^TmRH2iNJlimr(|hX)YOx?0d{Px-k=rU}v}!XmjZ4J$E_Xd0RU@dbYXA>MLeQpSHehdVN#$Ez`hfk!$Img$B9_^G3B-)k1Bxde}XdI?WI2>v|;KB^Ez+~EI zT+>sK*XAabe@!i17ExoWE0|c%rypBmB%`ko-y-4|G)VcxB+YVtMOseksm&}8u?)hX zhgITPe-idqSWY#NMO2cFM&5UXF>D82bjaWo0VS?^V#6b_A3y~dEImD)*t9#U{5uy6 z#sE{1m(g3b&;R%l5|HpeLKPAcsrqwhScj?ne$zwerBt9cb z<6;efGc`5!vuDp39zImxo$UseR3Q+`T7s{9{@i~Svb*9t^mbJAhX73PVQbwc@}w9( zDpoS|%<*~vc=O{L-`nd8)uxiY1)zq4QrrXN@4wK>7nIDmZ@a&ILE^U?hD&}}Bg=eb zeP7HE{~m7!|Hka=evXbQ-gG>*_41{NNq1i#+I_1BC648LsF2H#6#)DQ73y(X7?ROt z2*sj{DpGpPrnTXuuoebR0{%IgVq|h&3tS~7rFa@q9i}){c2H9Q7gcCYf0_}# zEJ4tk`tC0zJ-c(9U3mjTg%zq~jo)>I2<(T4PW*9i8ka6Th0B1Fx7cp+pY^D4}!^nKJf7+5+rJ3G5yU?2q> z-#gFsK_ZEeYs#KTJg$GOdwb69SNm;)(9qBqQ@4%?5M5YZX!Xn#a7d0UAW|R#AKrVk z@ol_Bh2;K*7TbIWfHTPFFu?-c35xgPK(qo+!shz??_9GRz5L&cyk9_K`URdtm>JIi zIN*H#N6+p(MPb(kxZPH}|1sEYaeTJ@?T2UZ-LtoRwu;to(u<3s;{M%O*-AYo0KyPE zB`(qKGQCN}J`G99$wjLQGi-Y%!#c)ZL~9;o9NGg`D~h1gOfPu6I2lj;4q@dQxnaNzju{#N zMnj)GB0rxVpc(hg_$m)Cu*d2e8stFrNJ>rBJGY;yegGRuhGYm2Z?6t)fAzlxeuE5H z+*07dlk4l_QL3dPAlU=4`qww!PHwi;xB%js>guuL?XF=Ru5pNd*T2fY)aUjC3h4R6Jdt1PoLSmC+O-};c+P$d< zZ28DG-veZrtejk-9w(pI_876$@eik38H18vbqtsQn2cd|0MLyCJWTKl1^u??hpR9I zh*6OLgnZ)2AJ*B8P;nc7Ky7Mjnrm{Q7IIxMI=?;LogHs^X**SQx^}Fn;`4d$k~Nsu zMT_hx3Pwl1rJN8jr-ps68tv?0!w6Ajn$bU#StasOmFmnRjU~80kY*oRSTI}P*m&SI zC+!H_sIZZ2;d`^u@1WzX&TUx|R1V4J1?bBE;eJCygWzqxytaHeI^JQ@B@MTrD)rDr zqmv&uGfP)^#qK6{UDQya@K0?5;WQ~j{fj9)k&dnJO=S$tS z?o!kcq9DpO^MSPa`4J7eR_i$sHOEVzW@H>qJ))tdU0qw#nJY+iIR=m(Br6m_1-A&u zF4dknD8QGyfsvNbP2-%<^t+j_a>kt$z>hDP&?wS>UdMO; zfW{+`dR$#y_Z)tL+{Eu3ImIp90R2=|s5FWJlN@OJ0sP!)5gdN_+8dJ~B?CqMlB;)By0?i9~1v8^VaHWXy@(aZp1EFB+h-)0B`N7`6vjy z3@_1wRE=7m!~=l8LiWW)`djpKg9f>sZJrDC324 z7+!yV=sTu}RKP}ucspSrLNk&*x!V&J3bdU{U9Q3ISee-Mmr6+)GaSE zX>TS z{MbYPWG4lMB&GAgWu`zb>hj{^LeOdUeT^ZHpHK2Ltg@WgsEDA;vxB?tI&!7J_GE@n z?no`Znyis9t5Ld@Z~|2eXqZy^hVrR8+TNbPtcp5XIxmKWK*K|+e7fBkB zaYs4ff-qMY`8B3X&BEYP^yf!Ut=8m$QccVTt9!|81=$o4EAQ<6R9aKHY0S^x6k}w3 zyIWDLhrGJlwK*c)?AlePjsW(6`b=NQQ_zoF{Eyl87u%wMA<=pCPxULm&9~22`{LYY zErb-j7OyHRInZ$_5ebr)6?I9K0pE4?^z>Gp%t;O}<9V={KsZ)NcpOix z?LrQ^WQ%Tziq_TVFog2Za1d?2Dw!2=`Ey2H^I5%bWRVs+0sepuKI9y(N%)5mNJ8f@S}`v~Tbua5{lz%YB71)P_~foP5+6pm zvDO!7nR(UALH~&*dg}eSn7)IZR+us&s-ZUNDQ6+o3LOw1B64%SNhJIMf!dE7TS`Nd z|NeEY^+|gP_`8K%#>|KZkcxOlN+{l4qkMEI#xBj30-mF6zAd2W3CZn}Q3NQ^=?>Cl zdB&NOYOyZ$K@5i7OcicRmKX7{c6=?=0WMyRrUTs-qR^H%o@@9*+_gUsd%02m`|Fkw^z_6T%5Dh5VIs8F_PbX*Fg^5!PVL8a!G z^jMER;lx8{i3WM6Y}g}DFR$uD>&!HDV9vl`LqkJ=#je^@0ErjiZ`nevR58WUL^gE< zyC!^Lx|aU1^Gk3=FnsYJTF(I)SXqJr@LRVr_sP>IF?i z3nWQp4@TbU=uG$kEaMJfDfYZ%xpVtR;U?nxx;g}4SHMUd0kwM%dF9iT5E8f_qZYMg z0N%u`fd*evUM^RtwcSe(aYq&7#lL=?l${+1Nbd)%A`rEfh1Gd+to%aBd4f|Rj3OY2 zwmDMVUZ4=C%w7MIosp5$Lznm6GH@3RROpg|uMm>K6(%(~a8m61tFonhnVD%?_*v-; z&=ofDRY8&%7u4HYz+lJmylPB8#l_)(wE?7RUdS8<4O-b{)eEg$!lS_|w3}Vcfi7NB zTB-sZf?`1nvGLb%7kaIPShlm6>&?8-w(gNsX95RjXt zV#CRUkBN;Oi64ByTc!v?g{i8n&Mq$Aw{`>L<3u2a7{R|O5*f~eU4-n#R&Uar@I3 zzA|KdBch{wlaoUebiNwZCz+9&`br^=oXqt0zvD9k%9E0pm%!#|ega4b9=6((MZd>p zA~kFCMv^0vM@B><{%MMlp|u6BgOEjjXk z%*^P%of^Hl+AzO93SvDl>^!)eX-oXI@1l?i(v{2cVIPlzAte$rG z@zG&*K}Msm`wgGasf8mqH@6i?B@7R%;qda-ih*XMmhpovT)8TJ=vlxYT4cTb9>65- zLj)f&ob)PAS(f5)M`UW#FvZJG>sP{UMYh+@DFtgC$`%&1I=}?|aj|te&d%$1 zI&=m{M+ZP)zaRn6Rx}cgLY}vuLDmic-a>e6z{BV%Dt$&qMw#Mb?kL*|y*ZlBM8bks z@>Z~}YGXa`vhT%80)Ip9LZ%->S@Cwc^{x|lSM+t>T&%8J>so2l(nE8)Ww3k*zojk1 z(I6;D0%%Fvogu*;PL$vHxLX(k_|O>vt8zx&ZjQo)y%lf>1B_4e}zv`vg!Q_T^w9$MH}ZUAFDq<9%ls{Z>q!Y6&s~kq#oWd z^9BX&bvmdBTmB%W3Tav;h26lj3R{g3NB{-b)K~-m*d)w8`h3`4OrI zo}Rz09kGo}faA&X9*7$IbI%d9-_+jre8A7C>dcZoMg{sXgefLBj z;3PDdS(}eKh`ZDLIn=pn*2qOB=N>al&&H8}f-u!G3tB-$%j($fE0XF{l%1JUTB+tWIi4|DGZLw77#xL{86HW z969;=A_vF8{&(6HkWi(>LdJ8_&wp+}_0R+)dsC%OF1A37r|Qdx=RkbL16}a`nt%&_ zy%q)On6W;h$DmzR7}QXGXlQV{JU^e3fNtAMJWWqN?^$%LTfiMm8tE8QhE`Trkzmm_ zSUEIrkaWRXC?7x%RsrrF92t4|GYU95)4aRj0XO15wcj4<0-c5>f=3 zXNgcbp$wrHXM*wp8WFZl!l!lgAhJvb8+Kj%fyAUC=vl;otE#H%Z!WI1uB8qZcg6Su z2@sthbOJ$v!;K6*y3x7T6jZ|9I}#$9rNSqHdI`DWLp^$_)!Zxl=F&W1(g{YNpKZB>tDXZ7*?vEq#KE1tBa-5Fk8e52O9&+K~q_ds*n&zdetN98pInE4@` z`wFFze%B#@M)Ec3inNOn+x9DiL@V8B0Z(4wyC2ZiNLfk$?q6tE!J}Iap?3FT8Bfhs z&nqclSeb8l4DtHlHrT%HNy7GND15s5IPz^&1voa8()dX_mCg*9VPE{BO`4psKnTOE zGlUkTxIrF2J^Opq%53L3XcRYI|ty~wB&1;~WwBCsX zspJ<`q=4)Ge@L_MDT}qINZNn7oJDf^Fb3s3`|`6eWww-QG6n5&XsxI=EGz2);LDL* zhVNH)rr#YN9VP$oD%F+2oSOL&c7MN~WbOBxtFEg93QOM=>76I*TjeG~E^qCam9$GR z3f}tNUG8>eyCM7d^ffy;s?rsY7XybB@%UBO|K}_}eLBjfdb3_<`)z1Q#pY?OZkrE? zM8RXBWJ99g!Gmg~3e?hq$X$eo9D{};o}2Oaer%d%>!n+xJ<>-f!=pgnPdMbL#IifB zq`{Y|+>uj!{9OOBq4&+rzF9LMfJ|b(pZWd$BJg*Wonvotm|%@ai#wk$s(>7a1Oq%u z<-Rv?()%Randjn#0t)~MCg!sT!9i2Pzn_nRA%G0ln@+0q=ZCqesyM8NP+kaOjm4y? zscB?nbpK%d&JPRkp-EaSV6u)=6`}F*xWGI3^XGhLT6Mk}=)TkM46UuLzmQakCZ{AN z-GAT6#H4#>#sGNDg+6~a>58xmgshAh`TsAWPy~n8z$k}KHVB1rhB1%^#N=fwok*nf zl)jnT2|A;7zYY4G|7{p`DF6rV0s)Qj_I4DyzVVHr7x&!61%e$g(X4E2jy#s5dMd5v z_%_zoic)UsyoTgT4pgQelUAt85zE6`e9*K>QM}>I>$golY5NiZCq3C%In_^d+gAu}_b>@p^!v-fOC$SOLplLi3n%S+@ z!A%cz-iX?mGni#j2aTd@KR@(H7XZG0irNrlFmY2@swg+EOIDhjNPDklf zau3tnv?6HUq?&yWdI0lkx(Np`4`7JIw6y2<2}ah9bNmhiA~uMPO$bN|=xI{DKv)iM zXy6Cr>gC2)vX<6X6&En3=TPVR{rS!q9WipyzpN^bUu%8q<5}Vv0ciED)&K{Rrk>dB z8aVD4bxOWohao_cTg_!zL!ANzxgr_2KZ)LbOIC1d_X+Vrd4y?UH|9C(nr$E#;KS-9gg#WSq zMZGN|gF-*K(HSe~l4FB7_%E7wu>l<3Yv-b##{faZx_^G6SVHRj(HjoZIZ0a zU4Y-%d7>pWof%%H$4Nv)ge2{~=OLm~#0yq6T?HZt>KWJ__*qzCTBf85;big}8XERL zK62RD*ti42`++^%LnI&?$XviWdb7Q~Eqh?kCo2oj5%hw0Xs9BGT)mbx=iw0ubY7Fk z4(&L`k15IzK}N@8T7`-=LL@gH+#H5)vRnmURgehb__MN(GZ=Gmsm_JmoD!?I`Tb?u zU+zqpwS+qAu7skPS$D#eGpy;DN_99Yqm*mWk{Ep|c~pT5LqtLn4&D|>)$!TSsayg1 zfVGw(LzfQB9eHP`e+vbny>S#+I0j06y};nR{CccDJP6NRhvNkutMHp6(N$l`bUMf_U#Z?Ogr({ytAVYiUmom5%Sb87E+Q zeMTEzw2MC3U!>+Ts0M0D)ZzS#{0C-&v{60o-rf6E*|)=@XDiWCSuc%H==( z4ru>J8r{>3DhcKIP!yH9sY*FIhE|$PDa$m^-sm@F?FE&(zfU^?No|hLFzB8ji}~o` z1?vOqy7FJjG;;$;zdRYgel$AWgAX%v^HQO5y(v_pQASQ){V#Is+uPAV30MOHbx_lT zfdW23!G|4;4$7EyP82cOp(sO65Wf{-Q|#~G)Mqu43xdKKz45Y0ApK>t{nITjuF$Qs z^f0@z(a~4~AI}%9V)*Xp`BzQOZm=8wZjUp!eEI~aMSV^uEK2t!aBx4>$y9J$QO{`4 z3Feqjmde&H;)O97p+r86hFO6L&wEikEG+EYndOblBrqyz#C>o<{wL`zo{HNNs^b)_ z$+>V=*fo)Ta4GNA_)Bz)%ycOL_(y(UU|u!=OihXrAZzF®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ΞeHJ+z4__Y+q|I|MMYGrpq|2eH@%EeG!c(=T`bb_ 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 KMY)+*%>MzJQe1ri diff --git a/ecosystem/eslint.md b/ecosystem/eslint.md index 3ae4d2e3..9189db4d 100644 --- a/ecosystem/eslint.md +++ b/ecosystem/eslint.md @@ -6,14 +6,61 @@ ## 为什么需要 ESLint -TypeScript 已经可以对代码进行静态检查了,那么为什么还需要 ESLint 呢? +TypeScript 除了是一个编译 ts 文件的工具以外,还可以[作为一个静态代码检查工具使用]()。 + +TypeScript 会对文件进行语法解析,如果遇到一些语法错误,或使用了未定义的变量,则会报错。 + +ESLint 也会对文件进行语法解析,它可以对一些代码风格进行约束,发现未定义的变量,但是对于错误的属性或方法引用,却无能为力。 + +我们对同样一段代码分别运行 `tsc` 和 `eslint`,会得到如下报错信息: + +```ts +let myName = 'Tom'; + +comsole.log(`My name is ${myName}`); +console.log(`My name is ${myNane}`); +console.log(`My name is ${myName.toStrng()}`); +console.log(`My name is ${ myName }`) + +// tsc 报错信息: +// +// index.ts(3,1): error TS2552: Cannot find name 'comsole'. Did you mean 'Console'? +// index.ts(4,27): error TS2552: Cannot find name 'myNane'. Did you mean 'myName'? +// index.ts(5,34): error TS2551: Property 'toStrng' does not exist on type 'string'. Did you mean 'toString'? +// +// +// eslint 报错信息: +// +// index.ts +// 3:1 error 'comsole' is not defined no-undef +// 4:27 error 'myNane' is not defined no-undef +// 6:25 error Unexpected space(s) after '${' template-curly-spacing +// 6:35 error Unexpected space(s) before '}' template-curly-spacing +// 6:38 error Missing semicolon semi +// +// ✖ 5 problems (5 errors, 0 warnings) +// 3 errors, 0 warnings potentially fixable with the `--fix` option. +``` + +| 存在的问题 | `tsc` 是否报错 | `eslint` 是否报错 | +| --------- | ------------- | ---------------- | +| `console` 被勿写成了 `comsole` | ✔️ | ✔️ | +| `myName` 被勿写成了 `myNane` | ✔️ | ✔️ | +| `toString` 被勿写成了 `toStrng` | ✔️ | ✖ | +| 模版字符串中 `${}` 内前后多出了两个空格 | ✖ | ✔️ | +| 少了一个分号 | ✖ | ✔️ | + +上例中,由于 `eslint` 无法识别 `myName` 存在哪些方法,所以对于拼写错误的 `toString` 没有检查出来。后面两个错误是代码风格,不影响编译,故 `tsc` 没有检查出来。而未定义的变量两者都能检查出来。 + +值得注意的是,`tsc` 不仅检查出来了代码问题,还非常智能的给出了修改建议。 -其实 ESLint +下面 TypeScirpt 作为一个静态代码检查工具,与 ESLint 的关系图: ![TypeScript 和 ESLint 的关系](../assets/typescript-eslint.png) +上图中,静态代码检查包括了很多种,其中 TypeScirpt 与 ESLint 有重叠的部分,也有各自独立的部分,虽然发现代码错误比统一的代码风格更重要,但是当一个项目越来越庞大,开发人员也越来越多的时候,代码风格的约束还是必不可少的。 -下面我们来一步一步给我们的 TypeScript 项目添加 ESLint 检查。 +下面我们就来一步一步给我们的 TypeScript 项目添加 ESLint 检查。 ## 安装 From a743403f4b09b1c627a17e78154084bbdb0357a3 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Fri, 3 Nov 2017 16:41:45 +0800 Subject: [PATCH 016/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20emoji?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecosystem/eslint.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ecosystem/eslint.md b/ecosystem/eslint.md index 9189db4d..22acb518 100644 --- a/ecosystem/eslint.md +++ b/ecosystem/eslint.md @@ -44,11 +44,11 @@ console.log(`My name is ${ myName }`) | 存在的问题 | `tsc` 是否报错 | `eslint` 是否报错 | | --------- | ------------- | ---------------- | -| `console` 被勿写成了 `comsole` | ✔️ | ✔️ | -| `myName` 被勿写成了 `myNane` | ✔️ | ✔️ | -| `toString` 被勿写成了 `toStrng` | ✔️ | ✖ | -| 模版字符串中 `${}` 内前后多出了两个空格 | ✖ | ✔️ | -| 少了一个分号 | ✖ | ✔️ | +| `console` 被勿写成了 `comsole` | ✅ | ✅ | +| `myName` 被勿写成了 `myNane` | ✅ | ✅ | +| `toString` 被勿写成了 `toStrng` | ✅️ | ❌ | +| 模版字符串中 `${}` 内前后多出了两个空格 | ❌ | ✅ | +| 少了一个分号 | ❌ | ✅ | 上例中,由于 `eslint` 无法识别 `myName` 存在哪些方法,所以对于拼写错误的 `toString` 没有检查出来。后面两个错误是代码风格,不影响编译,故 `tsc` 没有检查出来。而未定义的变量两者都能检查出来。 From a9f88eac0b5f308344ed95d40da0de752bf3b66b Mon Sep 17 00:00:00 2001 From: xcatliu Date: Mon, 6 Nov 2017 12:31:12 +0800 Subject: [PATCH 017/210] Add ga --- book.json | 5 ++++- ecosystem/eslint.md | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/book.json b/book.json index 5028c9ba..f6e988ed 100644 --- a/book.json +++ b/book.json @@ -3,13 +3,16 @@ "description": "从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。", "author": "xcatliu ", "language": "zh-hans", - "plugins": ["disqus", "github"], + "plugins": ["disqus", "github", "ga"], "pluginsConfig": { "disqus": { "shortName": "typescript-tutorial" }, "github": { "url": "https://github.com/xcatliu/typescript-tutorial" + }, + "ga": { + "token": "UA-45256157-14" } } } diff --git a/ecosystem/eslint.md b/ecosystem/eslint.md index 22acb518..5a7b92fa 100644 --- a/ecosystem/eslint.md +++ b/ecosystem/eslint.md @@ -64,13 +64,23 @@ console.log(`My name is ${ myName }`) ## 安装 -首先,我们需要安装 ESLint 和一些插件: +首先,我们需要安装 ESLint: ```bash npm install -g eslint ``` -关于 TypeScript 与 ESLint,有过一些争论: +以上命令会在全局环境下安装 `eslint` 命令,安装完成之后,我们就可以在任何地方执行 `eslint` 命令了。 + +由于 ESLint 默认使用 [Espree](https://github.com/eslint/espree) 进行语法解析,无法识别 TypeScript 的一些语法,故我们需要安装 `typescript-eslint-parser`,替代掉默认的解析器: + +```bash +npm install -g typescript-eslint-parser +``` + +## 创建配置文件 + +如果没有创建配置文件,那么 - 使用 ESLint 加上 @@ -84,7 +94,6 @@ npm install -g eslint cannot read property type of null - react 规则不可用 From 91ed75dad83d1e623bc035488137244d04bc0475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BA=8C?= <1206180097@qq.com> Date: Tue, 7 Nov 2017 09:27:38 +0800 Subject: [PATCH 018/210] Update type-of-function.md --- basics/type-of-function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basics/type-of-function.md b/basics/type-of-function.md index 8ec6f39a..fe415c00 100644 --- a/basics/type-of-function.md +++ b/basics/type-of-function.md @@ -209,7 +209,7 @@ function reverse(x: number | string): number | string { 上例中,我们重复定义了多次函数 `reverse`,前几次都是函数定义,最后一次是函数实现。在编辑器的代码提示中,可以正确的看到前两个提示。 -注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果由包含关系,需要优先把精确的定义写在前面。 +注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确的定义写在前面。 ## 参考 From 80a6cb54211d8d14826343000ffb67fade236e9f Mon Sep 17 00:00:00 2001 From: xcatliu Date: Fri, 10 Nov 2017 17:44:55 +0800 Subject: [PATCH 019/210] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20eslint=20=E7=AB=A0?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 18 +++++++++++++++ ecosystem/eslint.md | 53 +++++++++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 23 deletions(-) create mode 100644 .eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..f0f227f9 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,18 @@ +module.exports = { + parser: 'typescript-eslint-parser', + plugins: [ + 'typescript' + ], + rules: { + 'spaced-comment': 'off', + // 'react/no-unescaped-entities': 'off', + // 'react/self-closing-comp': 'off', + // 'react/void-dom-elements-no-children': 'off', + 'react/jsx-indent': 'off', + // 'react/jsx-indent-props': 'off', + // 'react/jsx-max-props-per-line': 'off' + // 还不支持 properties https://github.com/yannickcr/eslint-plugin-react/issues/1342 + 'react/sort-comp': 'off', + 'typescript/no-unused-vars': 'error' + } +}; \ No newline at end of file diff --git a/ecosystem/eslint.md b/ecosystem/eslint.md index 5a7b92fa..a119f401 100644 --- a/ecosystem/eslint.md +++ b/ecosystem/eslint.md @@ -17,70 +17,77 @@ ESLint 也会对文件进行语法解析,它可以对一些代码风格进行 ```ts let myName = 'Tom'; -comsole.log(`My name is ${myName}`); console.log(`My name is ${myNane}`); console.log(`My name is ${myName.toStrng()}`); -console.log(`My name is ${ myName }`) +console.log(`My name is ${myName}`) // tsc 报错信息: // -// index.ts(3,1): error TS2552: Cannot find name 'comsole'. Did you mean 'Console'? -// index.ts(4,27): error TS2552: Cannot find name 'myNane'. Did you mean 'myName'? -// index.ts(5,34): error TS2551: Property 'toStrng' does not exist on type 'string'. Did you mean 'toString'? +// index.ts(3,27): error TS2552: Cannot find name 'myNane'. Did you mean 'myName'? +// index.ts(4,34): error TS2551: Property 'toStrng' does not exist on type 'string'. Did you mean 'toString'? // // // eslint 报错信息: // // index.ts -// 3:1 error 'comsole' is not defined no-undef -// 4:27 error 'myNane' is not defined no-undef -// 6:25 error Unexpected space(s) after '${' template-curly-spacing -// 6:35 error Unexpected space(s) before '}' template-curly-spacing -// 6:38 error Missing semicolon semi +// 3:27 error 'myNane' is not defined no-undef +// 5:38 error Missing semicolon semi // -// ✖ 5 problems (5 errors, 0 warnings) -// 3 errors, 0 warnings potentially fixable with the `--fix` option. +// ✖ 2 problems (2 errors, 0 warnings) +// 1 errors, 0 warnings potentially fixable with the `--fix` option. ``` | 存在的问题 | `tsc` 是否报错 | `eslint` 是否报错 | | --------- | ------------- | ---------------- | -| `console` 被勿写成了 `comsole` | ✅ | ✅ | | `myName` 被勿写成了 `myNane` | ✅ | ✅ | | `toString` 被勿写成了 `toStrng` | ✅️ | ❌ | -| 模版字符串中 `${}` 内前后多出了两个空格 | ❌ | ✅ | | 少了一个分号 | ❌ | ✅ | -上例中,由于 `eslint` 无法识别 `myName` 存在哪些方法,所以对于拼写错误的 `toString` 没有检查出来。后面两个错误是代码风格,不影响编译,故 `tsc` 没有检查出来。而未定义的变量两者都能检查出来。 +上例中,由于 `eslint` 无法识别 `myName` 存在哪些方法,所以对于拼写错误的 `toString` 没有检查出来。而代码风格的错误不影响编译,故 `tsc` 没有检查出来。 + +未定义的变量两者都能检查出来。 值得注意的是,`tsc` 不仅检查出来了代码问题,还非常智能的给出了修改建议。 -下面 TypeScirpt 作为一个静态代码检查工具,与 ESLint 的关系图: +下面是 TypeScirpt 作为一个静态代码检查工具,与 ESLint 的关系图: ![TypeScript 和 ESLint 的关系](../assets/typescript-eslint.png) -上图中,静态代码检查包括了很多种,其中 TypeScirpt 与 ESLint 有重叠的部分,也有各自独立的部分,虽然发现代码错误比统一的代码风格更重要,但是当一个项目越来越庞大,开发人员也越来越多的时候,代码风格的约束还是必不可少的。 +上图中,TypeScript 与 ESLint 有重叠的部分,也有各自独立的部分,虽然发现代码错误比统一的代码风格更重要,但是当一个项目越来越庞大,开发人员也越来越多的时候,代码风格的约束还是必不可少的。 下面我们就来一步一步给我们的 TypeScript 项目添加 ESLint 检查。 ## 安装 -首先,我们需要安装 ESLint: +ESLint 可以安装在当前项目中或全局环境下,因为代码检查是项目的重要组成部分,所以我们一般会将它安装在当前项目中。可以运行下面的脚本来安装: ```bash -npm install -g eslint +npm install eslint --save-dev ``` -以上命令会在全局环境下安装 `eslint` 命令,安装完成之后,我们就可以在任何地方执行 `eslint` 命令了。 - 由于 ESLint 默认使用 [Espree](https://github.com/eslint/espree) 进行语法解析,无法识别 TypeScript 的一些语法,故我们需要安装 `typescript-eslint-parser`,替代掉默认的解析器: ```bash -npm install -g typescript-eslint-parser +npm install typescript-eslint-parser --save-dev +``` + +由于 `typescript-eslint-parser` 对一部分 ESLint 规则支持性不好,故我们需要安装 `eslint-plugin-typescript`,弥补一些支持性不好的规则。 + +```bash +npm install eslint-plugin-typescript --save-dev ``` ## 创建配置文件 -如果没有创建配置文件,那么 +ESLint 需要一个配置文件来决定对哪些规则进行检查,配置文件的名称一般是 `.eslintrc.js` 或 `.eslintrc.json`。 + +当运行 ESLint 的时候检查一个文件的时候,它会首先尝试读取该文件的目录下的配置文件,然后再一级一级往上查找,将所找到的配置合并起来,作为当前被检查文件的配置。 + +我们在项目的根目录下创建一个 `.eslintrc.js`,内容如下: + +```js + +``` - 使用 ESLint 加上 From baa3aeeb20665c062fb3c85bf1bbb6e0509815ab Mon Sep 17 00:00:00 2001 From: xcatliu Date: Wed, 22 Nov 2017 20:07:07 +0800 Subject: [PATCH 020/210] =?UTF-8?q?=E5=AE=8C=E6=88=90=20TypeScript=20?= =?UTF-8?q?=E4=B8=8E=20ESLint=20=E4=B8=80=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 22 +-- assets/vscode-eslint-error.png | Bin 0 -> 25130 bytes assets/vscode-output-eslint.png | Bin 0 -> 11928 bytes ecosystem/eslint.md | 228 ++++++++++++++++++++++++++++++-- package.json | 10 +- 5 files changed, 234 insertions(+), 26 deletions(-) create mode 100644 assets/vscode-eslint-error.png create mode 100644 assets/vscode-output-eslint.png diff --git a/.eslintrc.js b/.eslintrc.js index f0f227f9..38da2522 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,15 +4,15 @@ module.exports = { 'typescript' ], rules: { - 'spaced-comment': 'off', - // 'react/no-unescaped-entities': 'off', - // 'react/self-closing-comp': 'off', - // 'react/void-dom-elements-no-children': 'off', - 'react/jsx-indent': 'off', - // 'react/jsx-indent-props': 'off', - // 'react/jsx-max-props-per-line': 'off' - // 还不支持 properties https://github.com/yannickcr/eslint-plugin-react/issues/1342 - 'react/sort-comp': 'off', - 'typescript/no-unused-vars': 'error' + // @fixable 必须使用 === 或 !==,禁止使用 == 或 !=,与 null 比较时除外 + 'eqeqeq': [ + 'error', + 'always', + { + null: 'ignore' + } + ], + // 类和接口的命名必须遵守帕斯卡命名法,比如 PersianCat + 'typescript/class-name-casing': 'error' } -}; \ No newline at end of file +} diff --git a/assets/vscode-eslint-error.png b/assets/vscode-eslint-error.png new file mode 100644 index 0000000000000000000000000000000000000000..4b02c1c0a9a29640bcfdf79300833160798a0fe3 GIT binary patch literal 25130 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