Sobes.tech
Middle

Бул TypeScriptтин бул пайдалануучу түрлөрүнүн жана алардын колдонуу учурларынын айырмачылыктарын түшүндүрүңүз: ```typescript type someType1<T extends object> = Partial<T>; type someType2<T extends object> = T[keyof T]; type someType3<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; type SomeType4<T extends object, K extends keyof T = keyof T> = Omit<T, K> & Partial<Pick<T, K>>; ```

sobes.tech AI

AIден жооп

  • Partial<T>T түрүндөгү бардык мүнөздөмөлөрдү милдеттүү эмес кылат. Башкача айтканда, оригинал түрдүн бир бөлүгүн гана көрсөтүү керек болгондо колдонулат.

  • T[keyof T] — индекс аркылуу кирүү болуп саналат жана T объектисинин бардык мүнөздөмөлөрүнүн маанилеринин бирикмесин кайтарат. Мисалы, эгер T {a: string; b: number} болсо, анда T[keyof T] string | number болот.

  • Pick<T, Exclude<keyof T, K>>T түрүндөгү бардык мүнөздөмөлөрдү тандоодо, алардын ичинен K тизмесинде көрсөтүлгөндөрдү алып салат. Exclude K ачкычтарын T бардык ачкычтарынан чыгарып салат, ал эми Pick калганын тандоодо колдонулат. Бул Omit<T, K> менен барабар.

  • Omit<T, K> & Partial<Pick<T, K>>K тизмесиндеги мүнөздөмөлөрдү милдеттүү эмес кылган, калганын милдеттүү калтырган тип түзөт. Бул кайсы бир мүнөздөмөлөрдү опционал кылгыңыз келгенде жана калганын милдеттүү калтыргыңыз келгенде пайдалуу.

SomeType4 колдонуу мисалы:

interface User {
  id: number;
  name: string;
  email: string;
}

// email милдеттүү эмес кылынат
type UserWithOptionalEmail = SomeType4<User, 'email'>;

const user1: UserWithOptionalEmail = { id: 1, name: 'Alice' }; // email милдеттүү эмес