欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 面试题-定义一个函数入参数是any类型,返回值是string类型,如何写出这个函数,代码示例

面试题-定义一个函数入参数是any类型,返回值是string类型,如何写出这个函数,代码示例

2025/10/1 21:50:27 来源:https://blog.csdn.net/m0_47999208/article/details/148814933  浏览:    关键词:面试题-定义一个函数入参数是any类型,返回值是string类型,如何写出这个函数,代码示例

在 TypeScript 里,要定义一个入参为any类型、返回值为string类型的函数,可参考下面几种实现方式:

1. 基础实现

直接把入参转换为字符串返回。

function anyToString(input: any): string {return String(input); // 使用String()进行类型转换
}// 示例
console.log(anyToString(123));       // "123"
console.log(anyToString(true));      // "true"
console.log(anyToString({ a: 1 }));  // "[object Object]"

2. 自定义转换逻辑

依据输入值的类型,执行不同的转换逻辑。

function anyToString(input: any): string {if (typeof input === "string") {return input; // 字符串直接返回} else if (typeof input === "object") {if (input === null) return "null";try {return JSON.stringify(input); // 对象转JSON字符串} catch (e) {return String(input); // 转换失败则使用默认转换}} else if (typeof input === "function") {return input.toString(); // 函数转字符串} else {return String(input); // 其他类型使用默认转换}
}// 示例
console.log(anyToString({ name: "Alice" }));  // "{"name":"Alice"}"
console.log(anyToString(() => {}));           // "function () {}"

3. 安全转换(避免undefinednull

undefinednull提供默认值。

function anyToString(input: any): string {if (input === undefined) return ""; // 处理undefinedif (input === null) return "";      // 处理nullreturn String(input);
}// 示例
console.log(anyToString(undefined));  // ""
console.log(anyToString(null));       // ""

4. 类型守卫辅助

结合类型守卫,让转换逻辑更加清晰。

function isObject(input: any): input is object {return typeof input === "object" && input !== null;
}function anyToString(input: any): string {if (typeof input === "string") return input;if (isObject(input)) {try {return JSON.stringify(input);} catch {return "[object]";}}return String(input);
}

5. 处理特殊对象

针对特定类型的对象(如 Date),进行特殊处理。

function anyToString(input: any): string {if (input instanceof Date) {return input.toISOString(); // 日期转ISO字符串}if (typeof input === "object" && input !== null) {return JSON.stringify(input);}return String(input);
}// 示例
console.log(anyToString(new Date()));  // "2023-01-01T00:00:00.000Z"

注意事项

  • 使用String()还是.toString()

    • String(input)能处理nullundefined(返回"null""undefined")。
    • input.toString()在输入为nullundefined时会报错。
  • 对象循环引用问题

    typescript

    const obj = { a: 1 };
    obj.self = obj; // 循环引用// console.log(anyToString(obj)); // 会触发JSON.stringify()错误
    

总结

依据实际需求,挑选合适的转换策略:

// 简单版本
function anyToString(input: any): string {return String(input);
}// 增强版本
function anyToString(input: any): string {if (input === undefined || input === null) return "";if (input instanceof Date) return input.toISOString();if (typeof input === "object") {try {return JSON.stringify(input);} catch {return String(input);}}return String(input);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词