Microsoft/TypeScript

Typescript ESType definition improvements

Open

#27.545 aperta il 4 ott 2018

Vedi su GitHub
 (3 commenti) (0 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
Domain: lib.d.tsHelp WantedSuggestion

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 2g 7h) (8 PR mergiate in 30 g)

Descrizione

Hi,

The following types can be improved on to be more correct in the lib.es5.d.ts file.

These type improve typically deal with the cases on of the arrays items keys has subset of the other keys, in this case the results is the common subset, with mismatching fields made optional.

This requires functionality in typelevel-ts, however, that is only based on keys. new methods should do and K in keyof T, T[K] extends S[K] ? K : never

// Improved more correctly helper method.
type ObjectOmit<T extends Record<string,any>, O extends Record<string,any>, KeyOfO keyof O> = Pick<T, {
 [K in keyof T] : K extends KeyOfO ? 
                         T[K] extends O[K] | undefined ? never : K // may need a two way extends comparison here.
                          : K
}[keyof T]

export function ObjectAssign<T extends Record<string,any>, U extends Record<string,any>>(target: T, source: U): 
ObjectOverwrite<T, U>
{
  return Object.assign(target, source);
}

export function ArrayConcat<A>(arrayA: A [] , arrayB : A []) : A[]

export function ArrayConcat<B, A extends B>(arrayA: A [], arrayB : B []) : B & Partial<ObjectOmit<A, keyof B>>[]
export function ArrayConcat<A, B extends A>(arrayA: A [], arrayB : B []) : A & Partial<ObjectOmit<B, keyof A>>[]
{
  return arrayA.concat(arrayB) as any
}


export function FilterDefined<T>(items : Array<T> | undefined) : NonNullable<T> []
{
  if (items)
    return items.filter(f => f != undefined) as NonNullable<T> [];
  else
    return []; 
}

Guida contributor