-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
When the evolver passed to the evolve object is a curried function it is not resolving the type to the return of the curried function:
import R from 'ramda';
interface JobInfo {
currentJob: string,
previousJob?: string,
}
interface Person {
name: string,
job: JobInfo,
}
const developer: Person = {
name: 'John Doe',
job: {
currentJob: 'Developer',
}
}
const changeJob = R.curry(
(newJob: string, job: JobInfo) => {
return {
currentJob: newJob,
previousJob: job.currentJob,
}
});
const designer: Person = R.evolve({
job: changeJob('Designer'),
}, developer); // Throws ts errorAlthough if you explicit the types in the evolve generics it works:
import R from 'ramda';
interface JobInfo {
currentJob: string,
previousJob?: string,
}
interface Person {
name: string,
job: JobInfo,
}
const developer: Person = {
name: 'John Doe',
job: {
currentJob: 'Developer',
}
}
const changeJob = R.curry(
(newJob: string, job: JobInfo) => {
return {
currentJob: newJob,
previousJob: job.currentJob,
}
});
const designer: Person = R.evolve<{ job: (job: JobInfo) => JobInfo }, Person>({
job: changeJob('Designer'),
}, developer);Metadata
Metadata
Assignees
Labels
No labels