1 Star 1 Fork 0

wangzichu/ts-challenges

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
57.Get Required.ts 1.21 KB
一键复制 编辑 原始数据 按行查看 历史
王子初 提交于 2023-08-02 16:18 . 更新题库
/*
57 - Get Required
-------
by Zheeeng (@zheeeng) #困难 #utils #infer
### 题目
> 由谷歌自动翻译,欢迎 PR 改进翻译质量。
实现高级util类型`GetRequired<T>`,该类型保留所有必填字段
例如
```ts
type I = GetRequired<{ foo: number, bar?: string }> // expected to be { foo: number }
```
> 在 Github 上查看:https://tsch.js.org/57/zh-CN
*/
/* _____________ 你的代码 _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
type GetRequired<T> = {[k in keyof T as undefined extends T[k] ? never : k]:T[k]}
// type test = GetRequired<{ foo: number; bar?: string }>
// type test = Equal<{name:string,age:number},{name:string} & {age:number}>
/* _____________ 测试用例 _____________ */
// import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<GetRequired<{ foo: number; bar?: string }>, { foo: number }>>,
// Expect<Equal<GetRequired<{ foo: undefined; bar?: undefined }>, { foo: undefined }>>,
]
/* _____________ 下一步 _____________ */
/*
> 分享你的解答:https://tsch.js.org/57/answer/zh-CN
> 查看解答:https://tsch.js.org/57/solutions
> 更多题目:https://tsch.js.org/zh-CN
*/
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wang-zichu/ts-challenges.git
git@gitee.com:wang-zichu/ts-challenges.git
wang-zichu
ts-challenges
ts-challenges
master

搜索帮助