Skip to content

Commit 1f7b471

Browse files
authored
Merge pull request xcatliu#16 from jokester/add-generic-defaults
add default type params of generics
2 parents baa3aee + a3d76f4 commit 1f7b471

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

advanced/generics.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ createArray(3, 'x'); // ['x', 'x', 'x']
2828

2929
```ts
3030
function createArray<T>(length: number, value: T): Array<T> {
31-
let result = [];
31+
 let result: T[] = [];
3232
for (let i = 0; i < length; i++) {
3333
result[i] = value;
3434
}
@@ -44,7 +44,7 @@ createArray<string>(3, 'x'); // ['x', 'x', 'x']
4444

4545
```ts
4646
function createArray<T>(length: number, value: T): Array<T> {
47-
let result = [];
47+
let result: T[] = [];
4848
for (let i = 0; i < length; i++) {
4949
result[i] = value;
5050
}
@@ -156,7 +156,7 @@ interface CreateArrayFunc {
156156

157157
let createArray: CreateArrayFunc;
158158
createArray = function<T>(length: number, value: T): Array<T> {
159-
let result = [];
159+
let result: T[] = [];
160160
for (let i = 0; i < length; i++) {
161161
result[i] = value;
162162
}
@@ -175,7 +175,7 @@ interface CreateArrayFunc<T> {
175175

176176
let createArray: CreateArrayFunc<any>;
177177
createArray = function<T>(length: number, value: T): Array<T> {
178-
let result = [];
178+
let result: T[] = [];
179179
for (let i = 0; i < length; i++) {
180180
result[i] = value;
181181
}
@@ -202,9 +202,24 @@ myGenericNumber.zeroValue = 0;
202202
myGenericNumber.add = function(x, y) { return x + y; };
203203
```
204204

205+
## 泛型参数的默认类型
206+
207+
在 TypeScript 2.3 以后,我们可以为泛型中的类型参数指定默认类型。当使用泛型时没有在代码中直接指定类型参数,从实际值参数中也无法推测出时,这个默认类型就会起作用。
208+
209+
```ts
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;
216+
}
217+
```
218+
205219
## 参考
206220

207221
- [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)
208223

209224
---
210225

0 commit comments

Comments
 (0)