function assert(condition, message) {
if (!condition) {
throw new Error(message || "断言失败");
}
}
const formatArg = (arg) => {
if (Array.isArray(arg)) {
return arg.map((part) => `- ${part}`).join("\n");
}
if (arg.toString === Object.prototype.toString) {
return JSON.stringify(arg);
}
return arg;
};
const print = (segments, ...args) => {
let message = segments[0];
segments.slice(1).forEach((segment, index) => {
message += formatArg(args[index]) + segment;
});
return message;
};
const todos = ["学习 JavaScript", "学习 Web API", "构建网站", "利润!"];
const progress = { javascript: 20, html: 50, css: 10 };
let res = print `我需要做:
${todos}
当前进度为:${progress}
`;
console.log(res);
const normalize = (str) => str.replace(/\r\n/g, "\n");
assert(
normalize(res) === normalize(`我需要做:
- 学习 JavaScript
- 学习 Web API
- 构建网站
- 利润!
当前进度为:{"css":10,"html":50,"javascript":20}
`),
"模板字面量标签功能错误"
);