返回
步步高升:TypeScript 每日挑战等你来战!
前端
2023-11-19 13:44:02
相信很多 JavaScript 开发者都会使用 TypeScript 来编写代码,但你真的了解 TypeScript 吗?你的 TypeScript 技能到底到了什么水平?
如果你还不确定自己的 TypeScript 水平,那就快来参加 TypeScript 每日挑战吧!TypeScript 每日挑战是一个线上平台,为 TypeScript 开发者提供每日编程挑战。这些挑战涵盖了各种 TypeScript 主题,从基础语法到高级特性,应有尽有。
通过参加 TypeScript 每日挑战,你可以:
- 巩固你的 TypeScript 基础知识,查漏补缺。
- 掌握 TypeScript 的新特性和新用法。
- 提高你的 TypeScript 编码能力。
- 与其他 TypeScript 开发者交流心得,共同进步。
今日题目:
有一个名为 DocType
的接口,包含一组必填字段和一组可选字段。我们希望编写一个函数,该函数可以将一个对象转换为 DocType
类型。
如果该对象中包含所有必填字段,则返回一个 DocType
类型的对象。
否则,抛出错误。
例如:
const docType: DocType = {
name: 'John Doe',
age: 30,
};
const obj = {
name: 'John Doe',
age: 30,
city: 'New York',
};
const result = convertObjToDocType(obj);
console.log(result); // { name: 'John Doe', age: 30 }
现在,让我们一起来解决这个问题吧!
解答:
interface DocType {
name: string;
age: number;
city?: string;
}
function convertObjToDocType(obj: any): DocType {
const requiredFields = ['name', 'age'];
for (const field of requiredFields) {
if (!obj.hasOwnProperty(field)) {
throw new Error(`Missing required field: ${field}`);
}
}
return {
name: obj.name,
age: obj.age,
city: obj.city,
};
}