Notes
TypeScript
函数和类型推断

函数时一等公民,可以作为参数传递,也可以作为返回值返回。

函数定义

function add(x: number, y: number): number {
  return x + y;
}
 
let result = add(1, 2);

第一、第二个 number 表示参数类型,第三个 number 表示函数的返回值类型。

如果过多或过少的参数,那么会报错:

function add(x: number, y: number): number {
  return x + y;
}
 
let result = add(1);
Type '(x: number) => number' is not assignable to type '(x: number, y: number) => number'.
  Types of parameters 'x' and 'x' are incompatible.
    Type 'number' is not assignable to type 'string'.

可选参数

function add(x: number, y?: number): number {
  return y ? x + y : x;
}
 
let result = add(1);

可选参数只能放在最后,否则会报错:

function add(x?: number, y: number): number {
  return y ? x + y : x;
}
 
let result = add(1);
Type '(x?: number, y: number) => number' is not assignable to type '(x: number, y?: number) => number'.
  Types of parameters 'x' and 'x' are incompatible.
    Type 'number' is not assignable to type 'number | undefined'.

函数表达式

const add = function (x: number, y: number): number {
  return x + y;
};
 
let result = add(1, 2);

箭头函数

在 ES6 中,可以使用箭头函数,简化函数表达式的定义:

const add = (x: number, y: number): number => {
  return x + y;
};
 
let result = add(1, 2);

类型推断

在 TypeScript 中,如果没有明确指定类型,那么 TS 会自动推断出一个类型:

const add = (x: number, y: number) => {
  return x + y;
};
 
let result = add(1, 2);

此时,result 的类型会被推断为 number