六维教程

TypeScript 函数类型

在 TypeScript 中,函数类型不仅定义了函数的参数类型返回值类型,还可以将函数本身作为一种类型来使用。这就是“函数类型”的核心概念。

基本写法

为函数添加类型注解包含两个部分:参数类型返回值类型

// 语法:(参数: 类型, 参数: 类型) => 返回值类型
function add(a: number, b: number): number {
  return a + b;
}

注意返回值类型的注解写在参数括号之后,用冒号 : 分隔。

如果函数没有返回值,用 void

function logMessage(msg: string): void {
  console.log(msg);
  // 没有 return,或者 return; 但不返回值
}

参数类型

可选参数

参数名后加 ? 表示该参数可选:

function greet(name: string, prefix?: string): string {
  if (prefix) {
    return `${prefix} ${name}`;
  }
  return `Hello ${name}`;
}

greet('张三'); // 'Hello 张三'
greet('张三', 'Mr.'); // 'Mr. 张三'

注意:可选参数必须放在必选参数之后

默认参数

默认参数也支持类型注解:

function greet(name: string, prefix: string = 'Hello'): string {
  return `${prefix} ${name}`;
}

greet('张三'); // 'Hello 张三'
greet('张三', 'Hi'); // 'Hi 张三'

TypeScript 会根据默认值推断类型,但显式注解更清晰。

返回值类型

类型 含义 示例
void 函数没有返回值(或返回 undefined) 日志函数、事件处理函数
never 函数永远不会正常结束(抛错或死循环) 抛出异常、无限循环
// void:没有返回值
function log(msg: string): void {
  console.log(msg);
}

// never:抛出异常,函数在此终止
function throwError(msg: string): never {
  throw new Error(msg);
}

// never:无限循环,永远不会返回
function infiniteLoop(): never {
  while (true) {
    // 不会跳出
  }
}

never 不常用,但知道它的存在能帮你理解一些高级类型场景。

上一篇
TypeScript 枚举
下一篇
TypeScript 接口