TypeScript 是一种静态类型检查的 JavaScript 超集,其返回类型系统是类型系统的重要组成部分。返回类型定义了函数或方法执行后返回值的类型。
function getValue(id: number): string | number {
if (id > 0) {
return "positive";
} else {
return 0;
}
}
原因:函数可能根据条件返回不同类型的值,TypeScript 会推断出联合类型。
function throwError(message: string): never {
throw new Error(message);
}
原因:函数永远不会正常返回(总是抛出异常或无限循环),返回类型为 never
。
function noReturn(): void {
console.log("No return");
}
原因:void
表示函数没有返回值,而 undefined
表示函数显式返回 undefined
。
function processArray(arr: number[]) {
return arr.map(num => num > 0 ? "positive" : "negative");
}
// 返回类型被推断为 string[]
原因:TypeScript 根据内部逻辑自动推断返回类型,可能与预期不符。
function identity<T>(arg: T): T {
return arg;
}
原因:泛型函数会根据输入类型决定返回类型。
function getUser(id: number): User | null {
// ...
}
function getLength(obj: any): number {
return (obj as string).length;
}
function printId(id: string | number) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}
function getDate(timestamp: number): Date;
function getDate(dateStr: string): Date;
function getDate(value: number | string): Date {
if (typeof value === "number") {
return new Date(value);
} else {
return new Date(value);
}
}
unknown
代替 any
作为不确定类型的返回类型Promise<T>
明确返回的 Promise 类型通过理解这些"奇怪"的返回类型行为,可以更好地利用 TypeScript 的类型系统,编写更健壮、可维护的代码。