以下代码有此错误:Type '{ [x: string]: IHasAgeAndName[K]; }' is not assignable to type 'Pick<IHasAge, K>'.
我不理解的是,因为打字稿强制propName是IHasAge
的键,所以pureHasAge
变成{ [x: string]: IHasAgeAndName[K]; }
的原因?这样做const pureHasAge: Pick<IHasAge, K> = {...
也给我同样的错误。在这种情况下,propName只能是'age'
,不能是其他任何内容。
interface IHasAge {
age: number;
}
interface IHasAgeAndName extends IHasAge{
name: string;
}
const returnAge = <K extends keyof IHasAge>(hasAgeAndName: IHasAgeAndName, propName: K): Pick<IHasAge, K> => {
const pureHasAge = {
[propName]: hasAgeAndName[propName]
};
return pureHasAge;
};
returnAge({ age: 10, name: 'John' }, 'age');