Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c64bae3

Browse files
committed
更新到对象的类--接口,去掉个人化的例子,规范代码风格
1 parent 07bf919 commit c64bae3

File tree

6 files changed

+91
-94
lines changed

6 files changed

+91
-94
lines changed

basics/any.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ console.log(anyThing.myName.firstName);
3333
也允许调用任何方法:
3434

3535
```ts
36-
let anyThing: any = 'Xcat Liu';
37-
anyThing.setName('Jerry Lee');
38-
anyThing.setName('Jerry Lee').sayHello();
36+
let anyThing: any = 'Tom';
37+
anyThing.setName('Jerry');
38+
anyThing.setName('Jerry').sayHello();
3939
anyThing.myName.setFirstName('Cat');
4040
```
4141

@@ -50,7 +50,7 @@ let something;
5050
something = 'seven';
5151
something = 7;
5252

53-
something.setName('Jerry Lee');
53+
something.setName('Tom');
5454
```
5555

5656
等价于
@@ -60,7 +60,7 @@ let something: any;
6060
something = 'seven';
6161
something = 7;
6262

63-
something.setName('Jerry Lee');
63+
something.setName('Tom');
6464
```
6565

6666
## 参考

basics/primitive-data-types.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ var infinityNumber = Infinity;
7575
使用 `string` 定义字符串类型:
7676

7777
```ts
78-
let myName: string = 'Xcat Liu';
78+
let myName: string = 'Tom';
7979
let myAge: number = 25;
8080

8181
// 模板字符串
@@ -86,7 +86,7 @@ I'll be ${myAge + 1} years old next month.`;
8686
编译结果:
8787

8888
```js
89-
var myName = 'Xcat Liu';
89+
var myName = 'Tom';
9090
var myAge = 25;
9191
// 模板字符串
9292
var sentence = "Hello, my name is " + myName + ".\nI'll be " + (myAge + 1) + " years old next month.";
@@ -100,7 +100,7 @@ JavaScript 没有空值(Void)的概念,在 TypeScirpt 中,可以用 `voi
100100

101101
```ts
102102
function alertName(): void {
103-
alert('My name is xcatliu');
103+
alert('My name is Tom');
104104
}
105105
```
106106

basics/type-inference.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,17 @@ myFavoriteNumber = 7;
2424

2525
TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。
2626

27-
**在TypeScript 2.1 之前,如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型而完全不被类型检查**
27+
**如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 `any` 类型而完全不被类型检查**
2828

2929
```ts
3030
let myFavoriteNumber;
3131
myFavoriteNumber = 'seven';
3232
myFavoriteNumber = 7;
3333
```
3434

35-
**TypeScript 2.1 中,编译器会考虑对 myFavoriteNumber 的最后一次赋值来检查类型**[](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#improved-any-inference)
36-
3735
## 参考
3836

3937
- [Type Inference](http://www.typescriptlang.org/docs/handbook/type-inference.html)[中文版](https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Type%20Inference.html)
40-
- [TypeScript 2.1 Release Note](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html)
4138

4239
---
4340

basics/type-of-object-interfaces.md

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,30 @@ TypeScript 中的接口是一个非常灵活的概念,除了可用于[对类
1212

1313
```ts
1414
interface Person {
15-
name: string;
16-
age: number;
15+
name: string;
16+
age: number;
1717
}
1818

19-
let xcatliu: Person = {
20-
name: 'Xcat Liu',
21-
age: 25,
19+
let tom: Person = {
20+
name: 'Tom',
21+
age: 25
2222
};
2323
```
2424

25-
上面的例子中,我们定义了一个接口 `Person`,接着定义了一个变量 `xcatliu`,它的类型是 `Person`。这样,我们就约束了 `xcatliu` 的形状必须和接口 `Person` 一致。
25+
上面的例子中,我们定义了一个接口 `Person`,接着定义了一个变量 `tom`,它的类型是 `Person`。这样,我们就约束了 `tom` 的形状必须和接口 `Person` 一致。
2626

27-
接口一般首字母大写。
27+
接口一般首字母大写。[有的编程语言中会建议接口的名称加上 `I` 前缀](https://msdn.microsoft.com/en-us/library/8bc1fexb(v=vs.71).aspx)
2828

2929
定义的变量比接口少了一些属性是不允许的:
3030

3131
```ts
3232
interface Person {
33-
name: string;
34-
age: number;
33+
name: string;
34+
age: number;
3535
}
3636

37-
let xcatliu: Person = {
38-
name: 'Xcat Liu',
37+
let tom: Person = {
38+
name: 'Tom'
3939
};
4040

4141
// index.ts(6,5): error TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
@@ -46,18 +46,18 @@ let xcatliu: Person = {
4646

4747
```ts
4848
interface Person {
49-
name: string;
50-
age: number;
49+
name: string;
50+
age: number;
5151
}
5252

53-
let xcatliu: Person = {
54-
name: 'Xcat Liu',
55-
age: 25,
56-
website: 'http://xcatliu.com',
53+
let tom: Person = {
54+
name: 'Tom',
55+
age: 25,
56+
gender: 'male'
5757
};
5858

59-
// index.ts(9,3): error TS2322: Type '{ name: string; age: number; website: string; }' is not assignable to type 'Person'.
60-
// Object literal may only specify known properties, and 'website' does not exist in type 'Person'.
59+
// index.ts(9,5): error TS2322: Type '{ name: string; age: number; gender: string; }' is not assignable to type 'Person'.
60+
// Object literal may only specify known properties, and 'gender' does not exist in type 'Person'.
6161
```
6262

6363
可见,**赋值的时候,变量的形状必须和接口的形状保持一致**
@@ -68,24 +68,24 @@ let xcatliu: Person = {
6868

6969
```ts
7070
interface Person {
71-
name: string;
72-
age?: number;
71+
name: string;
72+
age?: number;
7373
}
7474

75-
let xcatliu: Person = {
76-
name: 'Xcat Liu',
75+
let tom: Person = {
76+
name: 'Tom'
7777
};
7878
```
7979

8080
```ts
8181
interface Person {
82-
name: string;
83-
age?: number;
82+
name: string;
83+
age?: number;
8484
}
8585

86-
let xcatliu: Person = {
87-
name: 'Xcat Liu',
88-
age: 25,
86+
let tom: Person = {
87+
name: 'Tom',
88+
age: 25
8989
};
9090
```
9191

@@ -95,18 +95,18 @@ let xcatliu: Person = {
9595

9696
```ts
9797
interface Person {
98-
name: string;
99-
age?: number;
98+
name: string;
99+
age?: number;
100100
}
101101

102-
let xcatliu: Person = {
103-
name: 'Xcat Liu',
104-
age: 25,
105-
website: 'http://xcatliu.com',
102+
let tom: Person = {
103+
name: 'Tom',
104+
age: 25,
105+
gender: 'male'
106106
};
107107

108-
// examples/playground/index.ts(9,3): error TS2322: Type '{ name: string; age: number; website: string; }' is not assignable to type 'Person'.
109-
// Object literal may only specify known properties, and 'website' does not exist in type 'Person'.
108+
// examples/playground/index.ts(9,5): error TS2322: Type '{ name: string; age: number; gender: string; }' is not assignable to type 'Person'.
109+
// Object literal may only specify known properties, and 'gender' does not exist in type 'Person'.
110110
```
111111

112112
## 任意属性
@@ -115,14 +115,14 @@ let xcatliu: Person = {
115115

116116
```ts
117117
interface Person {
118-
name: string;
119-
age?: number;
120-
[propName: string]: any;
118+
name: string;
119+
age?: number;
120+
[propName: string]: any;
121121
}
122122

123-
let xcatliu: Person = {
124-
name: 'Xcat Liu',
125-
website: 'http://xcatliu.com',
123+
let tom: Person = {
124+
name: 'Tom',
125+
gender: 'male'
126126
};
127127
```
128128

@@ -132,78 +132,78 @@ let xcatliu: Person = {
132132

133133
```ts
134134
interface Person {
135-
name: string;
136-
age?: number;
137-
[propName: string]: string;
135+
name: string;
136+
age?: number;
137+
[propName: string]: string;
138138
}
139139

140-
let xcatliu: Person = {
141-
name: 'Xcat Liu',
142-
age: 25,
143-
website: 'http://xcatliu.com',
140+
let tom: Person = {
141+
name: 'Tom',
142+
age: 25,
143+
gender: 'male'
144144
};
145145

146-
// index.ts(3,3): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'.
147-
// index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; website: string; }' is not assignable to type 'Person'.
146+
// index.ts(3,5): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'.
147+
// index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; gender: string; }' is not assignable to type 'Person'.
148148
// Index signatures are incompatible.
149149
// Type 'string | number' is not assignable to type 'string'.
150150
// Type 'number' is not assignable to type 'string'.
151151
```
152152

153153
上例中,任意属性的值允许是 `string`,但是可选属性 `age` 的值却是 `number``number` 不是 `string` 的子属性,所以报错了。
154154

155-
另外,在报错信息中可以看出,此时 `{ name: 'Xcat Liu', age: 25, website: 'http://xcatliu.com' }` 的类型被推断成了 `{ [x: string]: string | number; name: string; age: number; website: string; }`,这是联合类型和接口的结合。
155+
另外,在报错信息中可以看出,此时 `{ name: 'Tom', age: 25, gender: 'male' }` 的类型被推断成了 `{ [x: string]: string | number; name: string; age: number; gender: string; }`,这是联合类型和接口的结合。
156156

157157
## 只读属性
158158

159159
有时候我们希望对象中的一些字段只能在创建的时候被赋值,那么可以用 `readonly` 定义只读属性:
160160

161161
```ts
162162
interface Person {
163-
readonly id: number;
164-
name: string;
165-
age?: number;
166-
[propName: string]: any;
163+
readonly id: number;
164+
name: string;
165+
age?: number;
166+
[propName: string]: any;
167167
}
168168

169-
let xcatliu: Person = {
170-
id: 89757,
171-
name: 'Xcat Liu',
172-
website: 'http://xcatliu.com',
169+
let tom: Person = {
170+
id: 89757,
171+
name: 'Tom',
172+
gender: 'male'
173173
};
174174

175-
xcatliu.id = 9527;
175+
tom.id = 9527;
176176

177-
// index.ts(14,9): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property.
177+
// index.ts(14,5): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property.
178178
```
179179

180180
上例中,使用 `readonly` 定义的属性 `id` 初始化后,又被赋值了,所以报错了。
181181

182-
**只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候**
182+
**注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候**
183183

184184
```ts
185185
interface Person {
186-
readonly id: number;
187-
name: string;
188-
age?: number;
189-
[propName: string]: any;
186+
readonly id: number;
187+
name: string;
188+
age?: number;
189+
[propName: string]: any;
190190
}
191191

192-
let xcatliu: Person = {
193-
name: 'Xcat Liu',
194-
website: 'http://xcatliu.com',
192+
let tom: Person = {
193+
name: 'Tom',
194+
gender: 'male'
195195
};
196196

197-
xcatliu.id = 89757;
197+
tom.id = 89757;
198198

199-
// index.ts(8,5): error TS2322: Type '{ name: string; website: string; }' is not assignable to type 'Person'.
200-
// Property 'id' is missing in type '{ name: string; website: string; }'.
201-
// index.ts(13,9): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property.
199+
// index.ts(8,5): error TS2322: Type '{ name: string; gender: string; }' is not assignable to type 'Person'.
200+
// Property 'id' is missing in type '{ name: string; gender: string; }'.
201+
// index.ts(13,5): error TS2540: Cannot assign to 'id' because it is a constant or a read-only property.
202202
```
203203

204-
上例中,报错信息有两处,第一处是在对 `xcatliu` 进行赋值的时候,没有给 `id` 赋值。
204+
上例中,报错信息有两处,第一处是在对 `tom` 进行赋值的时候,没有给 `id` 赋值。
205205

206-
第二处是在给 `xcatliu.id` 赋值的时候,由于它是只读属性,所以报错了。
206+
第二处是在给 `tom.id` 赋值的时候,由于它是只读属性,所以报错了。
207207

208208
## 参考
209209

basics/union-types.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ myFavoriteNumber = true;
2020

2121
联合类型使用 `|` 分隔每个类型。
2222

23-
这里的 `string | number` 的含义是,允许 `myFavoriteNumber` 的类型是 `string` 或者 `number`,但是不能是其他类型。
23+
这里的 `let myFavoriteNumber: string | number` 的含义是,允许 `myFavoriteNumber` 的类型是 `string` 或者 `number`,但是不能是其他类型。
2424

2525
## 访问联合类型的属性或方法
2626

2727
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们**只能访问此联合类型的所有类型里共有的属性或方法**
2828

2929
```ts
3030
function getLength(something: string | number): number {
31-
return something.length;
31+
return something.length;
3232
}
3333

34-
// index.ts(2,20): error TS2339: Property 'length' does not exist on type 'string | number'.
34+
// index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'.
3535
// Property 'length' does not exist on type 'number'.
3636
```
3737

@@ -41,7 +41,7 @@ function getLength(something: string | number): number {
4141

4242
```ts
4343
function getString(something: string | number): string {
44-
return something.toString();
44+
return something.toString();
4545
}
4646
```
4747

introduction/hello-typescript.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function sayHello(person: string) {
99
return 'Hello, ' + person;
1010
}
1111

12-
let user = 'Xcat Liu';
12+
let user = 'Tom';
1313
console.log(sayHello(user));
1414
```
1515

@@ -25,7 +25,7 @@ tsc hello.ts
2525
function sayHello(person) {
2626
return 'Hello, ' + person;
2727
}
28-
var user = 'Xcat Liu';
28+
var user = 'Tom';
2929
console.log(sayHello(user));
3030
```
3131

0 commit comments

Comments
 (0)