microsoft / microsoft/TypeScript
Typescript ESType definition improvements
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
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 [];
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading lib.es5.d.ts and the typelevel-ts key-based functionality mentioned in the issue. Review the proposed ObjectAssign, ArrayConcat, and FilterDefined signatures, then verify that the declarations handle common keys, optional mismatches, and undefined filtering as intended.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- developer-experience
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100