TypeScript 教程
/ 函數(shù)
函數(shù)
返回類型
可以顯式定義函數(shù)返回值的類型。
實(shí)例
// 這里的 : number 表明此函數(shù)返回一個(gè)數(shù)字 function getTime(): number { return new Date().getTime(); }
如果沒有定義返回類型,TypeScript 將嘗試通過返回的變量或表達(dá)式的類型來推斷它。
void 返回類型
void 類型可用于指示函數(shù)不返回任何值。
實(shí)例
function printHello(): void { console.log('Hello!'); }
參數(shù)
函數(shù)參數(shù)的類型化使用與變量聲明類似的語法。
實(shí)例
function multiply(a: number, b: number) { return a * b; }
如果沒有定義參數(shù)類型,TypeScript 將默認(rèn)使用 any
,除非在下面的默認(rèn)參數(shù)和類型別名部分中提供了額外的類型信息。
可選參數(shù)
默認(rèn)情況下,TypeScript 會假定所有參數(shù)都是必需的,但它們可以被明確標(biāo)記為可選的。
實(shí)例
// 這里的 ? 操作符將參數(shù) c 標(biāo)記為可選 function add(a: number, b: number, c?: number) { return a + b + (c || 0); }
默認(rèn)參數(shù)
對于具有默認(rèn)值的參數(shù),默認(rèn)值應(yīng)在類型注釋之后:
實(shí)例
function pow(value: number, exponent: number = 10) { return value ** exponent; }
TypeScript 還可以從默認(rèn)值推斷類型。
命名參數(shù)
為命名參數(shù)類型化遵循與為普通參數(shù)類型化相同的模式。
實(shí)例
function divide({ dividend, divisor }: { dividend: number, divisor: number }) { return dividend / divisor; }
剩余參數(shù)
剩余參數(shù)可以像普通參數(shù)一樣進(jìn)行類型化,但其類型必須是數(shù)組,因?yàn)槭S鄥?shù)始終是數(shù)組。
實(shí)例
function add(a: number, b: number, ...rest: number[]) { return a + b + rest.reduce((p, c) => p + c, 0); }
類型別名
可以使用類型別名將函數(shù)類型與函數(shù)分開指定。
這些類型的編寫類似于箭頭函數(shù),參閱:箭頭函數(shù)。
實(shí)例
type Negate = (value: number) => number; // 在此函數(shù)中,參數(shù) value 自動從類型 Negate 中獲取類型 number const negateFunction: Negate = (value) => value * -1;