打字稿:使用keyof对象构建的对象无法像这样被识别

时间:2018-10-30 16:19:05

标签: typescript typescript-typings

以下代码有此错误: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');

0 个答案:

没有答案
相关问题