@@ -28,7 +28,7 @@ createArray(3, 'x'); // ['x', 'x', 'x']
28
28
29
29
``` ts
30
30
function createArray<T >(length : number , value : T ): Array <T > {
31
- let result = [];
31
+ let result: T [] = [];
32
32
for (let i = 0 ; i < length ; i ++ ) {
33
33
result [i ] = value ;
34
34
}
@@ -44,7 +44,7 @@ createArray<string>(3, 'x'); // ['x', 'x', 'x']
44
44
45
45
``` ts
46
46
function createArray<T >(length : number , value : T ): Array <T > {
47
- let result = [];
47
+ let result: T [] = [];
48
48
for (let i = 0 ; i < length ; i ++ ) {
49
49
result [i ] = value ;
50
50
}
@@ -202,23 +202,24 @@ myGenericNumber.zeroValue = 0;
202
202
myGenericNumber .add = function (x , y ) { return x + y ; };
203
203
```
204
204
205
- ## 类型参数的默认类型
205
+ ## 泛型参数的默认类型
206
206
207
- 在 TypeScript 2.3 以后,我们可以为泛型中的类型参数指定默认类型。当使用泛型时没有在代码中直接指定类型参数,从实际 (值) 参数中也无法推测出时,这个默认类型会起作用 。
207
+ 在 TypeScript 2.3 以后,我们可以为泛型中的类型参数指定默认类型。当使用泛型时没有在代码中直接指定类型参数,从实际值参数中也无法推测出时,这个默认类型就会起作用 。
208
208
209
209
``` ts
210
- function foo<T = number >(e ? : T []): T [] {
211
- return (e ? e : []) as T [];
210
+ function createArray<T = string >(length : number , value : T ): Array <T > {
211
+ let result: T [] = [];
212
+ for (let i = 0 ; i < length ; i ++ ) {
213
+ result [i ] = value ;
214
+ }
215
+ return result ;
212
216
}
213
-
214
- const specified: string [] = foo <string >([]);
215
- const inferred: string [] = foo ([" " ]);
216
- const default_used: number [] = foo ();
217
217
```
218
218
219
219
## 参考
220
220
221
221
- [ Generics] ( http://www.typescriptlang.org/docs/handbook/generics.html ) ([ 中文版] ( https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/generics.html ) )
222
+ - [ Generic parameter defaults] ( https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#generic-parameter-defaults )
222
223
223
224
---
224
225
0 commit comments