「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
其实大多数 TypeScript 开发者,对 TypeScript 的利用,还停留在初级水平。
不信吗?来试试每日挑战吧!
今日题目
// 我有一堆必填字段
interface DocType {
aaa: string,
bbb: string,
ccc: string
}
// 函数类型定义,等你来改写 ...
function makeDoc(part1: any, part2: any) {
// ...
}
复制代码
有一个名为 DocType
的 interface
,包含一组必填字段
需要实现一个名为 makeDoc
的函数定义,它有 2 个参数:part1
、part2
,它们都拥有 DocType
的部分字段(Partial<DocType>
)
需要你在 TypeScript 类型定义层面,实现 makeDoc
两个参数的类型校验:
part1
和part2
的字段合并后,即Object.assign({}, part1, part2)
,满足DocType
的类型定义。part1
和part2
中不能有重复字段。
测试用例
// 合法
makeDoc({
aaa: '111',
bbb: '222'
}, {
ccc: '333'
})
// 合法
makeDoc({
aaa: '111',
bbb: '222',
ccc: '333'
}, {})
// 合法
makeDoc({ccc: '333'}, {
aaa: '111',
bbb: '222'
})
// 应该报错(因为缺少必填字段 ccc)
makeDoc({
aaa: '111',
}, {
bbb: '222'
})
// 应该报错(因为 aaa 字段重复出现)
makeDoc({
aaa: '111',
bbb: '222'
}, {
aaa: '333',
ccc: '444',
})
复制代码
欢迎你将答案或者思路留言在评论区~
答案将在 周五下午 17:00 揭晓。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END