返回到文章

采纳

编辑于 3月前

TypeScript中的 ?: 是什么意思

TypeScript


在 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 可以有,也可以没有”。