在 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
参数可以传也可以不传。
三、注意事项
不能用
?
后跟默认值(在接口中):// 错误用法(interface里不能这样) interface A { x?: number = 1; }
函数参数同时可选 + 默认值(这是合法的):
function f(x?: number = 1) {} // ❌语法错误 function f(x: number = 1) {} // ✅这样写即可
总结
语法 | 含义 | 用法场景 |
---|---|---|
?: |
可选属性/参数 | 接口、函数参数 |
如果你看到类似 key?: valueType
,就可以理解成:“这个 key 可以有,也可以没有”。