无法在选择的类型上分配适当的值

时间:2019-06-20 11:32:17

标签: typescript

当我在Typescript中尝试类似的操作时...

interface SomeType {
  size: 'sm' | 'md' | 'lg';
  other: any;
}

let size: Pick<SomeType, 'size'> = 'sm';

我收到此错误。这是预期的错误吗?

Type '"sm"' is not assignable to type 'Pick<SomeType, "size">'

2 个答案:

答案 0 :(得分:2)

Pick<SomeType, 'size'>将创建一个具有属性size的对象类型,基本上与{ size: 'sm' | 'md' | 'lg'; }相同。

您可能正在寻找类型索引查询:

interface SomeType {
    size: 'sm' | 'md' | 'lg';
    other: any;
}

let size: SomeType['size'] = 'sm'; //ok

答案 1 :(得分:2)

来自Pick的定义

type Pick<T, K extends keyof T> = { [P in K]: T[P]; }

您使用的是

{ size: 'sm' | 'md' | 'lg'; }

所以你必须做

let size: Pick<SomeType, 'size'> = { size: 'sm' };