type MyReadonly2<T, K extends keyof T = keyof T> = Omit<T, K> & {
readonly [I in keyof T]: T[I]
}
Solution by tungulin #36724
// 여기 풀이를 입력하세요
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [key in K]: T[key]
} & Omit<T, K>
Solution by seungdeok #36697
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [P in K]: T[P]
} & {[U in keyof T as U extends K ? never : U] : T[U]}
Solution by wiJeeXu #36664
type MyReadonly2<T, K extends keyof T = keyof T> = { readonly [P in K]: T[P] } & { [P in Exclude<keyof T, K>]: T[P] }
Solution by ChemieAi #36561
type MyReadonly2<T, K = keyof T > =
{ readonly [Key in keyof T as Key extends K ? Key : never]: T[Key]}
& {[Key in keyof T as Key extends K ? never : Key ]: T[Key]}
Solution by badri-derakhshan #36529
type MyReadonly2<T, K extends keyof T = keyof T> = { readonly [P in K]: T[P] } & { [P in Exclude<keyof T, K>]: T[P] }
Solution by asylbekduldiev #36328
// 你的答案
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [key in keyof T as key extends K? key: never]: T[key]
} & {
[key in keyof T as key extends K? never: key]: T[key]
}
Solution by leafBoat-dev #36295
// 你的答案
type Merge<T> = {
[P in keyof T]: T[P]
}
type MyReadonly2<T extends object, K extends keyof T = never> = [K] extends [never] ?
{ readonly[P in keyof T] : T[P]}
:Merge<{ readonly[P in keyof T as P extends K ? P : never] : T[P]}&{ [P in keyof T as P extends K ? never : P] : T[P]}>
//虽然方式很笨拙,不管没出西现报错就好
Solution by 352623635 #36166
type MyReadonly2<T, K extends keyof T = keyof T> =
{readonly [Prop in keyof T as Prop extends K ? Prop : never]: T[Prop]}
& {[Prop in keyof T as Prop extends K ? never : Prop]: T[Prop]}
Solution by karazyabko #36037
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [P in K]: T[P];
} & {
[P in keyof T as P extends K ? never : P]: T[P];
};
Solution by Young2un #35703
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [P in K]: T[P];
} & Omit<T, K>;
Solution by gangnamssal #35506
// your answers
type MyReadonly2<T extends {}, K extends keyof T = keyof T> = T & { readonly [P in K]: T[P] };
Solution by Sathiyapramod #35456
type MyReadonly2<T, K = keyof T> = Omit<T, K & keyof T> & {
readonly [k in keyof T as k extends K ? k : never]: T[k]
}
Solution by wendao-liu #35174
type MyReadonly2<T, P extends keyof T> = {
readonly [K in P]: T[K];
} & {
[K in keyof T as K extends P ? never : K]: T[K];
}
Solution by ClarityOfMind #35041
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [key in K]: T[key];
} & {
[key in keyof Omit<T, K>]: T[key];
}
Solution by dominikmatt #35009
type MyReadonly2<T, K extends keyof T> = {
readonly [P in K]: T[P]
} & {
[P in Exclude<keyof T, K>]: T[P];
};
Solution by raeyoung-kim #34997
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [key in K]: T[key]
} & {
[key in keyof T as key extends K ? never: key]: T[key]
}
Solution by 56aiden90 #34909
type MyReadonly2<T, K extends keyof T = keyof T> ={ readonly [key in K]: T[key] } & { [R in keyof T as R extends K ? never : R]: T[R] }
Solution by floatDreamWithSong #34872
type MyReadonly2<T, K extends keyof T = keyof T> = { readonly [Key in keyof Pick<T, K>]: T[Key] } & { [Key in keyof Omit<T, K>]: T[Key] }
Solution by eunsukimme #34825
// your answers
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [P in K]: T[P];
} & {
[P in keyof T as P extends K ? never : P]: T[P];
};
Solution by zeyuanHong0 #34774
// 你的答案
type MyOmit<T extends Record<string, any>, K> = {
[key in keyof T as key extends K ? never : key]: T[key]
}
type MyPick<T extends Record<string, any>, K> = {
[key in keyof T as key extends K ? key : never]: T[key]
}
type ToReadonly<T extends Record<string, any>> = {
readonly [key in keyof T]: T[key]
}
type IsRq<T, U> = (<P>() => P extends T ? 1 : 2) extends (<P>() => P extends U ? 1 : 2) ? true : false
type MyReadonly2<T extends Record<string, any>, K extends keyof T | undefined = undefined> = IsRq<K, undefined> extends true ? ToReadonly<T> : ToReadonly<MyPick<T, K>> & MyOmit<T, K>
Solution by softkilllengxiaoning #34734
type MyReadonly2<T, K extends keyof T = keyof T> = {
readonly [P in K]: T[P];
} & {
[P in keyof T as P extends K ? never : P]: T[P];
}
Solution by dev-jaemin #34630
type MyReadonly2<T, K extends keyof T = keyof T> =
{
readonly [key in K] : T[key]
} & {
[P in keyof T as P extends K ? never : P] : T[P]
}
// K extends keyof T = keyof T, use "=" here mean that assign K with default value keyof T
Solution by binhdv155127 #34602
type MyReadonly2<T extends Record<string, any>, K extends keyof T = keyof T> = { [P in keyof T as (P extends K ? never : P)]: T[P] } & { readonly [P in keyof T]: T[P] }
// your answers
Solution by Rustamaha #34589
type MyReadonly2<T, K extends keyof T = keyof T> = Omit<T, K> & {
readonly [U in K]: T[U]
} & Omit<T, K>
Solution by Yunjaejo #34588
type MyReadonly2<T, K extends keyof T = keyof T> = {
[P in keyof T as P extends K ? never : P]: T[P]
} & {
readonly [P in K]: T[P]
}
Solution by devshinthant #34560
//存在小问题的答案
type MyReadonly2<T, K extends keyof T> = Readonly<Pick<T, K>> & Omit<T, K>;
如果对于泛型K没有指定默认值,则泛型K为必填选项,无法跑通第一个案例,即仅存在单个T,而不存在K的情况。所以要为第二个泛型指定默认值。
//正确答案
type MyReadonly2<T, K extends keyof T = keyof T> = Readonly<Pick<T, K>> & Omit<T, K>;
Solution by wxh-cyber #34441
type MyReadonly2<T extends object, K extends keyof T = keyof T> = {
readonly [P in K]: T[P];
} & {
[P in keyof T as P extends K ? never : P]: T[P];
}
Solution by ktim816 #34431
type MyReadonly2<T, K extends keyof T = keyof T> = Omit<T, K> & { readonly [P in K]: T[P] }
Solution by rookie-luochao #34368
// your answers
type Pick<T,B extends keyof T> = {[K in B]: T[K]}
type Exclude<T, U> = T extends U ? never : T
type MyReadonly2<T, K extends keyof T= keyof T> = {readonly [E in K ]: T[E]} & Pick<T, Exclude<keyof T, K>>
Solution by felix1532 #34314