typescript 如何使用可选的动态字符串联合属性名创建记录?[duplicate]

ewm0tg9j  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(135)
    • 此问题在此处已有答案**:

Define a list of optional keys for Typescript Record(6个答案)
17小时前关门了。
我想定义一个对象类型,其中属性名称是预定义的,但也是可选的。
我想创建下面更长语法的等价物,但是有没有一种方法可以让它动态地带有可选属性,这样我就可以轻松地添加/删除这些选项?

interface List {
  one?: string;
  two?: string;
  three?: string;
}

我正在尝试找到一种方法来使下面的无效代码工作。

type options = 'one' | 'two' | 'three';
type List = Record<options, string>;

// Valid
const MyObjOne: List = {
    one: 'Value 1',
    two: 'Value 2',
    three: 'Value 3',
}

// Invalid
const MyObjTwo: List = {
  one: 'Value 1',
  two: 'Value 2',
}

但TypeScript对MyObj TSPlayground链接给出此错误
Property 'three' is missing in type '{ one: string; two: string; }' but required in type 'List'.

yks3o0rb

yks3o0rb1#

使用实用程序类型Partial

type List = Partial<Record<options, string>>;

相关问题