TypeScript中的 ?: 是什么意思

半兽人 发表于: 2025-07-28   最后更新时间: 2025-07-28 09:31:12  
{{totalSubscript}} 订阅, 37 游览

在 TypeScript 中,?:可选属性(optional)或可选参数 的语法,表示 这个属性或参数可以有,也可以没有

一、用在接口中:可选属性

interface User {
  name: string;
  age?: number; // age 是可选的
}

const u1: User = { name: "Alice" };
const u2: User = { name: "Bob", age: 30 };

解释:

  • age?: number 表示 age 可以是 number,也可以没有。

二、用在函数参数中:可选参数

function greet(name: string, age?: number) {
  if (age !== undefined) {
    console.log(`Hello ${name}, you are ${age} years old.`);
  } else {
    console.log(`Hello ${name}`);
  }
}

greet("Tom");
greet("Jerry", 18);

解释:

  • age?: number 表示 age 参数可以传也可以不传。

三、注意事项

  1. 不能用 ? 后跟默认值(在接口中):

    // 错误用法(interface里不能这样)
    interface A {
      x?: number = 1;
    }
    
  2. 函数参数同时可选 + 默认值(这是合法的):

    function f(x?: number = 1) {} // ❌语法错误
    
    function f(x: number = 1) {}   // ✅这样写即可
    

总结

语法 含义 用法场景
?: 可选属性/参数 接口、函数参数

如果你看到类似 key?: valueType,就可以理解成:“这个 key 可以有,也可以没有”。

更新于 2025-07-28
在线,1小时前登录

查看TypeScript更多相关的文章或提一个关于TypeScript的问题,也可以与我们一起分享文章