[Typescript] 118. Hard - IsRequiredKey
Implement a generic IsRequiredKey<T, K>
that return whether K
are required keys of T
.
For example
type A = IsRequiredKey<{ a: number, b?: string },'a'> // true
type B = IsRequiredKey<{ a: number, b?: string },'b'> // false
type C = IsRequiredKey<{ a: number, b?: string },'b' | 'a'> // false
/* _____________ Your Code Here _____________ */
type Equal<T, U> = (<P>(x: P) => T extends P ? 1 : 2) extends (<P>(x: P) => U extends P ? 1 : 2) ? true: false;
type RequiredKeys<T> = keyof {
[Key in keyof T as T[Key] extends Required<T>[Key] ? Key: never]: T[Key]
}
type IsRequiredKey<T, K extends keyof T> = Equal<K,RequiredKeys<T>> extends true ? true : false;
/* _____________ Test Cases _____________ */
import type { Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<IsRequiredKey<{ a: number; b?: string }, 'a'>, true>>,
Expect<Equal<IsRequiredKey<{ a: number; b?: string }, 'b'>, false>>,
Expect<Equal<IsRequiredKey<{ a: number; b?: string }, 'b' | 'a'>, false>>,
]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2020-11-26 [RxJS] Filtering operator: first
2020-11-26 [Tools] Interactively exploring a large JSON file with fx
2020-11-26 [Javascript] Broadcaster + Operator + Listener pattern -- 22. mapError, wrap fetch with broadcaster with cancellation
2020-11-26 [Javascript] Cancel a promise
2020-11-26 [Tools] Uncaught ReferenceError: regeneratorRuntime is not defined
2019-11-26 [ML] Tensorflow.js + Image segmentPerson
2019-11-26 [Javascript] Generators & Iterable Objects